当我点击FloatingActionButton时,我在Android应用程序中显示了一个DialogFragment。
现在,这是DialogFragment的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:focusable="true"
android:focusableInTouchMode="true">
<TextView
android:id="@+id/labelStartDate"
android:layout_width="150dp"
android:layout_height="150dp"
android:gravity="left|center"
android:padding="15dp"
android:text="@string/start_date"/>
<DatePicker
android:id="@+id/startDate"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:layout_toRightOf="@id/labelStartDate"
android:calendarViewShown="false"
android:datePickerMode="spinner"
android:endYear="2100"
android:startYear="1900"
>
</DatePicker>
<TextView
android:id="@+id/labelEndDate"
android:layout_width="150dp"
android:layout_height="150dp"
android:gravity="left|center"
android:padding="15dp"
android:layout_below="@id/labelStartDate"
android:text="@string/end_date"/>
<DatePicker
android:id="@+id/endDate"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:calendarViewShown="false"
android:datePickerMode="spinner"
android:layout_toRightOf="@id/labelEndDate"
android:layout_below="@id/labelStartDate"
android:paddingTop="10dp"
android:endYear="2100"
android:startYear="1900"
>
</DatePicker>
......
</RelativeLayout>
在我的片段中,我以这种模式打开DialogFragment:
FloatingActionButton button = (FloatingActionButton) v.findViewById(R.id.add_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertsDialogFragment dialog = AlertsDialogFragment.newInstance();
dialog.show(getActivity().getFragmentManager(),"");
}
});
现在,使用此代码,我能够显示Dialogfragment,但现在我有两个问题:
1)如果我显示对话框,那么我点击视图上的另一个点,对话框是隐藏的。 2)如果我点击第四个(例如)editText,我就无法点击下一个EditText,我必须隐藏键盘,然后点击edittext ...
修改
答案 0 :(得分:0)
第1点:在对话框对象上使用方法setCanceledOnTouchOutside(false)
public void onClick(View v) {
AlertsDialogFragment dialog = AlertsDialogFragment.newInstance();
dialog.setCanceledOnTouchOutside(false);
dialog.show(getActivity().getFragmentManager(),"");
}
其他信息here
第二点:查询不清楚,无论如何我试图推断它:你想要移动到下一个字段(editText)
解决方案是在editText中使用键盘操作,因此您必须添加此属性
android:imeOptions = actionNext
。
以这种方式,您仍然看不到下一个可聚焦字段(editText),但是当用户选择Next(回车键)时,系统会将“actionNext”操作应用于当前EditText转到下一个字段
您可以找到有关键盘操作here
的其他信息