gpt4 book ai didi

Android 使用 MaterialDatePicker 和 TextInputLayout

转载 作者:行者123 更新时间:2023-12-04 23:53:13 30 4
gpt4 key购买 nike

我是 android 开发的新手,目前正在尝试将 Material 设计集成到我的应用程序中。
我想评估一个简单的表格,为此我使用了组件 com.google.android.material.textfield.TextInputLayoutcom.google.android.material.textfield.TextInputEditText用于用户输入。除了文本输入,我还需要一个日期,我想用 MaterialDatePicker 读取它.

我试图显示 MaterialDatePickerOnFocusChangeListener ,这也有效,但我有两个问题。

  • 显示有点延迟,因为首先打开了一个键盘,该键盘在调用 MaterialDatePicker 后立即关闭.
  • 当使用 Back 按钮关闭显示时,焦点仍在 TextInputLayout 上。所以我必须先改变焦点才能打开 MaterialDatePicker再次。

  • 这就是我实现 OnFocusChangeListener 的方式
    @Override
    public void onFocusChange(View view, boolean selected) {

    if( view.getId() == R.id.myId&& selected ){

    MaterialDatePicker.Builder builder = MaterialDatePicker.Builder.datePicker();
    MaterialDatePicker picker = builder.build();
    picker.show( this.getParentFragmentManager(), "DATE_PICKER" );
    }
    }

    是否有更适合演示的 Material Design 替代组件?我想将行为保留在表单中,因此用户输入日期后,上方应显示一个小标签,如下所示:

    enter image description here

    谢谢您的帮助。

    最佳答案

    我最近遇到了同样的问题。

    关于键盘的第一个问题是通过调用来解决的:

    mTextInputEditText.setInputType(InputType.TYPE_NULL);

    通过将 InputType 设置为 TYPE_NULL,将不会通过单击文本字段打开键盘。
    此外,如果您不再希望用户能够输入任何文本,您可以添加:
    mTextInputEditText.setKeyListener(null);

    第二个问题,要在 DatePicker 已经处于焦点时再次显示它,您可以设置一个额外的 onClickListener:
    mTextInputEditText.setOnClickListener(new View.OnClickListener()
    {
    @Override
    public void onClick(View v)
    {
    openDatePicker();
    }
    });

    一旦用户再次单击文本字段,就会调用 OnClickListener。可悲的是,它不适用于第一次点击。
    你可以看看这个答案 https://stackoverflow.com/a/11799891/9612595了解更多信息。不幸的是,使用 Material 的提示使文本字段无法聚焦会导致奇怪的行为。

    我希望这会有所帮助!

    关于Android 使用 MaterialDatePicker 和 TextInputLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60710536/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com