Android 如何将windowFixedHeightMinor/Major与DialogFragment一起使用

Android 如何将windowFixedHeightMinor/Major与DialogFragment一起使用,android,dialogfragment,Android,Dialogfragment,我试图将windowFixedHeightMinor与自定义的DialogFragment结合使用,以创建一个固定大小(实际大小成比例)的对话框 我正在我的onCreate @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(STYLE_NORMAL, R.style.MyDialog); } 主题:

我试图将
windowFixedHeightMinor
与自定义的
DialogFragment
结合使用,以创建一个固定大小(实际大小成比例)的对话框

我正在我的
onCreate

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(STYLE_NORMAL, R.style.MyDialog);
}
主题:

<style name="MyDialog" parent="Base.Theme.AppCompat.Light.Dialog.FixedSize">
    <item name="android:windowBackground">@color/light_blue</item>
    <item name="android:windowMinWidthMajor">80%p</item>
    <item name="android:windowMinWidthMinor">80%p</item>
    <item name="windowFixedHeightMinor">80%p</item>
    <item name="windowFixedHeightMajor">80%p</item>
</style>
主要是为了参考,对话框本身如下所示,尽管我尝试过从中剥离几乎所有内容,但结果类似

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

    <Button
        android:text="@string/accept"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/done"

        android:layout_margin="16dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        />

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_above="@id/done"
        >

        <RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >

            <RadioButton
                android:text="Pink"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/pink"
                android:layout_weight="1" />

            <RadioButton
                android:text="Purple"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/purple"
                android:layout_weight="1" />
        </RadioGroup>
    </ScrollView>
</RelativeLayout>

我在一个正常的活动中做了一些非常类似的事情(使用windowFixedHeightMinor=80%),它似乎工作得很好,所以它似乎应该工作,但我尝试过的所有变体似乎都没有这样做

我尝试过的一些事情:

  • 使用基本百分比(80%)代替父百分比(80%p)
  • 在对话框布局中使用
    线性布局
    而不是
    相对布局
  • 使用
    setLayout
    setAttributes
    ,在各种位置(包括
    onResume
    onCreate
    onCreateDialog
    )将窗口布局显式设置为
    WRAP\u CONTENT
    onCreateDialog
  • <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <Button
            android:text="@string/accept"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/done"
    
            android:layout_margin="16dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            />
    
        <ScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true"
            android:layout_above="@id/done"
            >
    
            <RadioGroup
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                >
    
                <RadioButton
                    android:text="Pink"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/pink"
                    android:layout_weight="1" />
    
                <RadioButton
                    android:text="Purple"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/purple"
                    android:layout_weight="1" />
            </RadioGroup>
        </ScrollView>
    </RelativeLayout>