【发布时间】:2020-11-17 18:34:30
【问题描述】:
我尝试运行它,但编辑文本视图在单击时没有响应。日期选择器甚至没有打开。这里有什么问题?
由于我是新手,请务必帮助我提供详细的答案以及完整的代码。谢谢
XML
<EditText
android:id="@+id/add_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginLeft="32dp"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="Enter Date"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/add" />
MainActivity
public class addScreen extends AppCompatActivity {
EditText dateFormat;
int year, month, day;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_screen);
{
dateFormat = findViewById(R.id.add_date);
final Calendar calendar = Calendar.getInstance();
dateFormat.setOnClickListener(v -> {
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(addScreen.this, (view, year, month, dayOfMonth) -> dateFormat.setText(SimpleDateFormat.getDateInstance().format(calendar.getTime())), year, month, day);
datePickerDialog.show();
});
}
}
}
【问题讨论】:
-
我的猜测是 EditTexts 默认有一个触摸监听器,它会拦截你的触摸事件并阻止“点击”事件的发生。
-
那你建议怎么做?
-
您不能拥有
onClick监听器和更改EditText文本的能力。您可以使用TextView代替EditText -
感谢 Ben P。我能够通过您的解决方案解决我的问题。
-
@mostafa3dmax 实际上我们可以做到这一点并且一切正常,我们需要做的就是添加“android:focusable="false"”这将有助于停止键盘提示并在第一次点击时直接收听 onClickListener。
标签: java android xml android-developer-api