与AlertDialog不同,DialogFragment的宽度占据整个屏幕

时间:2017-12-10 07:28:44

标签: android android-layout android-dialogfragment android-dialog

我试图在我的dialogFragment类中膨胀一个CustomView,它工作正常,但宽度占整个屏幕(90%),但如果我在AlertDialog中膨胀相同的布局,它只是工作正常,宽度似乎正确&好。

我也试过通过onStart()设置DialogFragment的宽度,但这不是理想的结果......

这就是我想要的(AlertDialog中的CustomView) 1

但这是通过DialogFragment的结果 - 与AlertDialog相比,更多的宽度! 2]

布局文件 -

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lz_gridChooserParent"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <com.lazygeniouz.colorpicker.FillGridView
            android:id="@+id/lz_grid"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:columnWidth="@dimen/colorchooser_circlesize"
            android:clipToPadding="false"
            android:gravity="center"
            android:horizontalSpacing="8dp"
            android:numColumns="auto_fit"
            android:orientation="vertical"
            android:stretchMode="columnWidth"
            android:verticalSpacing="8dp"
            android:padding="16dp"/>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left|bottom"
                android:text="Custom"
                android:id="@+id/lz_gotoCustom"
                android:background="?attr/selectableItemBackground"
                android:layout_margin="10dp"
                android:typeface="serif"
                android:textStyle="bold"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center|bottom"
                android:text="@string/back"
                android:id="@+id/lz_back"
                android:background="?attr/selectableItemBackground"
                android:layout_margin="10dp"
                android:typeface="serif"
                android:textStyle="bold"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|bottom"
                android:text="@string/done"
                android:id="@+id/lz_done"
                android:background="?attr/selectableItemBackground"
                android:layout_margin="10dp"
                android:typeface="serif"
                android:textStyle="bold"/>

        </FrameLayout>

    </LinearLayout>

</ScrollView>

3 个答案:

答案 0 :(得分:2)

如果您计划在固定大小的设备上运行此应用程序而不是正常,但是如果您的应用程序将在不同大小的设备(不同屏幕尺寸或平板电脑的手机)上运行,而不是考虑在您的片段容器上应用match_parent,并且从父容器应用布局填充,以及片段周围所需的空白空间比例。

这将让您控制片段的大小,同时允许在不同屏幕尺寸的情况下平滑调整大小。

例如,如果从包含线性布局根元素和片段子元素的XML文件中扩展活动布局,则填充将应用于线性布局元素,match_parent将用于fragment元素。在这种情况下,您可以选择相关的填充数字,以实现目标。

我希望这能为您提供一些有用的实施方案。

答案 1 :(得分:1)

试试我的工作:

我的类是扩展AlertDialog而不是DialogFragment,

并且在类中我重写了show函数,如下所示:

 @Override
    public void show() {
        super.show();
        getWindow().setLayout(500, 300);

然后我这样打开它:

MyDialog myDialog = new MyDialog(getActivity());
                myDialog.show();
希望它有所帮助!

答案 2 :(得分:0)

这就是我做的, 我只是将DialogFragment的宽度设置为520&amp;它给了我我想要的东西:)