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%),它似乎工作得很好,所以它似乎应该工作,但我尝试过的所有变体似乎都没有这样做
我尝试过的一些事情:
线性布局
而不是相对布局
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>