如何在DialogFragment中使用windowFixedHeightMinor / Major

时间:2017-01-11 18:23:52

标签: android dialogfragment

我尝试将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>

我可以看到正在应用于我的对话框(这就是设置背景的原因)并且正在应用windowMinWidthMajor,因为对话框大约是屏幕大小的80%。但是,对话框始终是屏幕的整个高度。

对话框本身显示为:

MyDialogFragment.newInstance().show(getFragmentManager(), "dialog");

主要供参考,对话框本身如下所示,尽管我已尝试从中删除几乎所有内容,结果相似。

<?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%)并且似乎工作得很好,所以看起来它应该可以工作,但我没有试过任何变化似乎这样做。

我尝试过的一些事情:

  1. 使用基本百分比(80%)代替父百分比(80%p)
  2. 在对话框布局中使用LinearLayout代替RelativeLayout
  3. 使用WRAP_CONTENTMATCH_PARENT明确将窗口布局设置为setLayoutsetAttributes,包括onResume,{{ 1}}和onCreate

0 个答案:

没有答案