Android 单击Edittext,弹出日期输入对话框片段

Android 单击Edittext,弹出日期输入对话框片段,android,datepicker,android-edittext,dialog,android-dialogfragment,Android,Datepicker,Android Edittext,Dialog,Android Dialogfragment,我已经创建了一个编辑文本来捕获日期。在edittext的setOnClickListener上,我正在显示日期日志框。我在此对话框中选择日期,然后在编辑文本中设置所选日期 当我第一次单击edittext时,setOnClickListener事件没有被触发,一切都很好。我需要再次单击编辑文本以显示对话框。 可能我需要为edittext设置一些属性。 这是编辑文本 <EditText android:id="@+id/edtDOB"

我已经创建了一个编辑文本来捕获日期。在edittext的setOnClickListener上,我正在显示日期日志框。我在此对话框中选择日期,然后在编辑文本中设置所选日期

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

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

<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" />

谁能指引我。提前感谢。

首先,您必须创建一个名为
DatePick
的类或任何您想要的类,并为DataPikCerDailog弹出窗口编写代码

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

在你想弹出DatePickerDialog的活动中,你必须这样调用这个类-

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并在编辑文本中显示所选日期。

试试这个。。 再加上这两件事

 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"/>
android:clickable=“true” android:editable=“false”
这是有原因的,因为当我们第一次点击editText时,光标会在上面移动,editText会聚焦。试试看

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


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

android:focusableInTouchMode="false"
android:focusable="false"
请在EditText中设置android:focusable=“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" />
android:focusableInTouchMode="false"
android:focusable="false"