Android 单击Edittext,弹出日期输入对话框片段
我已经创建了一个编辑文本来捕获日期。在edittext的setOnClickListener上,我正在显示日期日志框。我在此对话框中选择日期,然后在编辑文本中设置所选日期 当我第一次单击edittext时,setOnClickListener事件没有被触发,一切都很好。我需要再次单击编辑文本以显示对话框。 可能我需要为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
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"