DatePicker对话框不显示一次单击

问题描述 投票:1回答:3

期望:

[当用户点击MaterialTextView组件时,应打开DatePickerDialog。

发生了什么事:

用户需要在MaterialTextView组件上点击两次以打开DatePickerDialog。

MainActivity

protected void onCreate(Bundle SavedInstanceState){
MaterialTextView issueDate = findViewById(R.id.edIssueDate);
 issueDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);

            hideKeyboard(AddNewCoupon.this);
            DatePickerDialog datePickerDialog = new DatePickerDialog(AddNewCoupon.this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                    issueDate.setText(String.valueOf(dayOfMonth)+"/"+String.valueOf(month)+"/"+String.valueOf(year));
                    //newCustomer.hideKeyboard(AddNewCoupon.this);
                }
            }, year, month, day);
            datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
            datePickerDialog.show();
        }
    });
}

hideKeyboard()方法:

public static void hideKeyboard(Activity activity) {
    InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    View view = activity.getCurrentFocus();
    if (view == null) {
        view = new View(activity);
    }

    if (imm != null)
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

布局:

<com.google.android.material.textview.MaterialTextView
                        android:id="@+id/edIssueDate"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="4dp"
                        android:ems="10"
                        android:focusable="auto"
                        android:focusableInTouchMode="true"
                        android:hint="@string/txtVIssueingDtHint"
                        android:nextFocusDown="@id/edExpDate"
                        android:onClick="showDatePickerDialogForIssue"
                        android:paddingLeft="4dp"
                        android:textColor="@color/design_default_color_on_secondary"
                        android:textSize="18sp"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/textView2" />

依赖关系:

dependencies {
...

implementation 'com.google.android.material:material:1.2.0-alpha04'

...
}

代码在DatePickerDialog打开时运行良好,但问题是用户需要轻按两次才能对其进行操作。我在哪里弄错了?如何修复代码?

android material-ui-pickers
3个回答
0
投票

focusablefocusableInTouchMode的值更改为false,将达到目的]]

 android:focusable="false"
 android:focusableInTouchMode="false"

希望这会有所帮助!


0
投票

将文本视图更改为


0
投票

删除此选项,除非它是必需的选项。

© www.soinside.com 2019 - 2024. All rights reserved.