android - 如何使 DialogFragment 宽度为 Fill_Parent

标签 android android-layout android-fragments android-dialogfragment

我正在开发一个 android 应用程序,我使用 DialogFragment 来显示对话框,但它的宽度非常小。我怎样才能把这个宽度设置为 fill_parent 呢?

public class AddNoteDialogFragment extends DialogFragment {

    public AddNoteDialogFragment() {
        // Empty constructor required for DialogFragment
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        getDialog().setTitle(getString(R.string.app_name));
        View view = inflater.inflate(R.layout.fragment_add_note_dialog,
                container);

        return view;
    }


    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog = super.onCreateDialog(savedInstanceState);

        // request a window without the title
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);

        return dialog;
    }
}

fragment_add_note_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <EditText
        android:id="@+id/addNoteEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:hint="@string/clock_enter_add_note"
        android:imeOptions="actionDone"
        android:inputType="textCapSentences|textMultiLine"
        android:lines="5" />

    <Button
        android:id="@+id/submit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@drawable/login_button"
        android:text="@string/submit_button"
        android:textColor="@android:color/white" />

</LinearLayout>

最佳答案

这是我想出的解决这个问题的解决方案:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);    
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);

    return dialog;
}

@Override
public void onStart() {
    super.onStart();

    Dialog dialog = getDialog();
    if (dialog != null) {
       dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
       dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    }
}

编辑:

在返回膨胀 View 之前,您可以在 Fragment 的 onCrateView 方法中使用下面的代码。

getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

关于android - 如何使 DialogFragment 宽度为 Fill_Parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23990726/

相关文章:

android - SQLite: No Such Table Error Android P问题

android - 使用导航 View 菜单项上的选择器添加自定义形状波纹

android - 我可以从 string.xml 文件中读取文本颜色的字符串吗?

android - 创建 ArrayAdapter 时出错

android - 如何知道 Fragment 上的输入转换何时结束?

android - 在 Android 中的 2 种布局之间切换

android - layout_weight =".4"看起来比 layout_weight =".6"大

android - 如何让水平 Linear Layout Child 包裹其内容?

android - FragmentManager、LocalActivityManager 和 TabHost.setup()

android - 如何编写 ContactsContract 使其在 2.2 中运行并且不会在 1.5 中崩溃?