如果单击另一个视图点,如何显示DialogFragment

时间:2016-05-13 08:42:06

标签: android view dialogfragment

当我点击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 ...

  

修改

对于第二点,当我显示DialogFragment时,我看到: enter image description here

但是如果我点击反应文本,我就看不到文本状态了,你可以从这张图片中看到: enter image description here

1 个答案:

答案 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

的其他信息