onclick Edittext,弹出日期输入对话框片段

onclick Edittext, popup a date input dialog fragment

我创建了一个编辑文本来捕捉日期。在 edittext 的 setOnClickListener 上,我正在显示日期 doalog 框。我 select 此对话框上的日期和 selected 日期在编辑文本上设置。

一切正常,只是当我第一次单击编辑文本时 setOnClickListener 事件没有被触发。我需要再次单击编辑文本以显示对话框。

可能我需要为编辑文本设置一些 属性。 这是编辑文本

<EditText
                        android:id="@+id/edtDOB"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:ems="10"
                        android:hint="@string/dateFormat"
                        android:inputType="date"
                        android:longClickable="false"
                        android:maxLength="10"
                        android:textAlignment="textStart"
                        android:textColor="@color/black"
                        android:textColorHint="@color/colorAccent"
                        android:textSize="@dimen/font_size" />

这里是onclicklistener事件

dob.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                java.util.Calendar today = java.util.Calendar.getInstance();
                YY = today.get(java.util.Calendar.YEAR);
                MM = today.get(java.util.Calendar.MONTH);
                DD = today.get(java.util.Calendar.DAY_OF_MONTH);
                Log.e("current DD/MM/YY", DD+"/"+MM+"/"+YY);
                DatePickerDialog dialog = new DatePickerDialog(
                        PremiumCalculation.this,
                        android.R.style.Theme_Holo_Light_Dialog_MinWidth,
                        mDateSetListener,
                        YY, MM, DD);
                dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                dialog.show();
            }
        });

谁能指导一下。提前致谢。

首先,您必须创建一个名为 DatePicked 的 class 或任何您想要的名称,然后为 DataPikcerDaialog 弹出窗口编写代码。

public class DatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{

ImageButton btnDatePicker;
EditText txtDOB;

public DatePicker(View view, EditText txtDOB){
    btnDatePicker = (ImageButton) view;
    this.txtDOB = txtDOB;
}

public Dialog onCreateDialog(Bundle savedInstanceState){
    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);
    return new DatePickerDialog(getActivity(),this, year, month, day);
}
@Override
public void onDateSet(android.widget.DatePicker datePicker, int year, int month, int day) {
    String date = day + "/" + (month+1) + "/" + year;
    txtDOB.setText(date);
}
}

您可以使用 EditText 或 TextView。如果您使用的是 EditText,请确保禁用 EditText。

而activity你想在其中弹出DatePickerDialog,你必须这样调用class-

final EditText txtDOB = (EditText) findViewById(R.id.txtDOB);   
txtDOB.setFocusable(false);      //Disable Your EditText
txtDOB.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DatePicker datePicker = new DatePicker(view, txtDOB);
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            datePicker.show(ft, "Date Picker");
        }
    });

这将打开 DatePickerDialog 并在您的 EditText 中显示选定的日期。

试试这个.. 添加这两件事..

 android:clickable="true"
 android:editable="false"

<EditText
   android:id="@+id/Birthday"
   custom:font="@string/font_avenir_book"
   android:clickable="true"
   android:editable="false"
  `enter code here` android:hint="@string/birthday"/>

这是有原因的,它的发生是因为当我们第一次点击 editText 时,光标移动到它上面并且 editText 变得可聚焦。试试看

android:clickable="false"
                android:cursorVisible="false"
                android:focusable="false"
                android:focusableInTouchMode="false"

作为

<EditText
                android:id="@+id/et_doc_date"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clickable="false"
                android:cursorVisible="false"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:hint="Document Date*"
                android:inputType="text"
                android:maxLength="40"
                android:digits="1234567890-/"
                android:paddingLeft="10dp"
                android:singleLine="true"
                android:textCursorDrawable="@null"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:textColor="@color/black_color" />

将这两个附加属性添加到您的 edittext xml 并为其实现 onClick 事件

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