【问题标题】:How can display DialogFragment if I click on another point of View如果我单击另一个视图,如何显示 DialogFragment
【发布时间】:2016-05-13 08:42:06
【问题描述】:

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

在我的 Fragment 中,我以这种模式打开 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 时,我看到:

但是如果我点击反应文本,我看不到文本状态,正如你从这张图片中看到的那样:

【问题讨论】:

  • 第 1 点指向 dialog.getDialog().setCanceledOnTouchOutside(false); 以避免在外部触摸时关闭对话框并且您的第 2 点不清楚
  • 对于第(1)点做dialog.setCancelableOnTouchOutside(false);
  • 好的,如果我使用这个代码:dialog.getDialog().setCanceledOnTouchOutside(false),我固定了第一点
  • 我有编辑,我的问题

标签: android view dialogfragment


【解决方案1】:

第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

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多