【问题标题】:Date Picker In Edit Text - What's wrong in this code?编辑文本中的日期选择器 - 这段代码有什么问题?
【发布时间】: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


【解决方案1】:

正如Ben P在上面的评论中所说,EditText 默认是可聚焦的。

因此,如果您想阻止它显示在键盘上并只听点击侦听器,您可能需要在下面的行中停止焦点,请在您的 xml 中添加 EditText 声明

android:focusable="false"

这就是你的 EditText 现在可以监听你的点击监听器了。

PS 我建议您使用材料 TextInputLayout 和 TextInputEditText,在创建和输入字段并显示时,它具有漂亮的外观并遵循现代 UX它给你的用户。

【讨论】:

  • 非常感谢艾哈迈德。现在,一切正常。正如我之前提到的,我是新手......所以我仍在发现和学习它的功能。如果可能的话,请帮助我找到一个可以使用 Java 从头开始​​学习 Android 开发的好地方。
  • 你好@SuryanshKushwaha 谢谢你,我认为谷歌文档和代码实验室将是一个很好的开始,谷歌有一个你可以使用的培训路径。 developer.android.com/courses/fundamentals-training/overview-v2 如果我的回答正确,请您接受它作为正确答案:D
  • 我实际上正在学习那些 codelabs 课程,但唯一的问题是它们不提供基础知识。在许多地方,他们只是要求复制和粘贴代码,而不是彻底解释!
  • 你也可以试试上面提到的这个google-developer-training.github.io/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 2015-04-25
  • 2018-09-09
相关资源
最近更新 更多