编辑文本中的日期选择器 - 此代码有什么问题?
Date Picker In Edit Text - What's wrong in this code?
我试过 运行,但是编辑文本视图在点击时没有任何反应。甚至没有打开日期选择器。这里有什么问题?
由于我是新手,请帮我提供详细的答案以及完整的代码。谢谢
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();
});
}
}
}
正如 Ben P 在上面的评论中所说,默认情况下 EditText 是可聚焦的。
因此,如果你想阻止它显示在键盘上而只听点击监听器,你可能需要停止焦点下面这一行,所以在你的 xml[= 中添加它的 EditText 声明11=]
android:focusable="false"
就是这样,您的 EditText 现在可以收听您的点击侦听器了。
P.S. 我建议您使用 material TextInputLayout 和 TextInputEditText在创建和输入字段并将其展示给您的用户时,外观精美并遵循现代用户体验。
我试过 运行,但是编辑文本视图在点击时没有任何反应。甚至没有打开日期选择器。这里有什么问题?
由于我是新手,请帮我提供详细的答案以及完整的代码。谢谢
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();
});
}
}
}
正如 Ben P 在上面的评论中所说,默认情况下 EditText 是可聚焦的。
因此,如果你想阻止它显示在键盘上而只听点击监听器,你可能需要停止焦点下面这一行,所以在你的 xml[= 中添加它的 EditText 声明11=]
android:focusable="false"
就是这样,您的 EditText 现在可以收听您的点击侦听器了。
P.S. 我建议您使用 material TextInputLayout 和 TextInputEditText在创建和输入字段并将其展示给您的用户时,外观精美并遵循现代用户体验。