我正在构建一个注册表单,并在fragment dialog
字段聚焦后立即尝试显示EditText
。目前,当它首次获得焦点时,它会显示键盘,然后再次点击它会调出Dialog。这个问题的主要目标是让Dialog在获得焦点时出现。如果你也可以帮助代码停止出现这个EditText
的键盘,那将是非常了不起的,我可以把它留给另一个问题。
布局xml
<TextView
android:id="@+id/tvRegDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvEmail"
android:layout_marginTop="15dp"
android:text="Registration Due:" />
<EditText
android:id="@+id/etRegDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/tvRegDate"
android:layout_toEndOf="@id/tvFirstName"
android:ems="10"
android:inputType="none"
android:singleLine="true"
android:layout_alignStart="@+id/etLastName"
android:onClick="showDatePickerDialog"
/>
java代码
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
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);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
}
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
答案 0 :(得分:0)
现在您正在使用onClick()
而不是必须使用setOnFocusChangeListener()
此事件会在EditText
获得焦点时尽快解除。
示例强>
editText.setOnFocusChangeListener(
new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
// show dialog here
}
}
});