windowMinWidthMajor和android:windowMinWidthMajor有什么区别?

14
我想为我的ProgressDialog设置一个合适的样式。我喜欢默认的样式,但我想自定义它。我尝试使用AppCompat对话框,但它们都会为我的对话框设置一些奇怪的宽度和高度。
我发现从MaterialDialog进行扩展即可解决问题,所以这段代码有效:
<style name="ProgressDialogTheme" parent="MaterialBaseTheme.AlertDialog" >
</style>

这是因为 MeterialDialog 本身设置了自定义宽度。

<style name="MaterialBaseTheme.AlertDialog" parent="MaterialBaseTheme.Dialog">
        <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
        <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
    </style>

我发现有一个AppCompat对话框,可以设置相同的自定义宽度,这是它:

<style name="Base.Theme.AppCompat.Light.Dialog.Alert">
        <item name="windowMinWidthMajor">@dimen/abc_dialog_min_width_major</item>
        <item name="windowMinWidthMinor">@dimen/abc_dialog_min_width_minor</item>
    </style>

但它不起作用

唯一的区别是在MeterialDialog属性开头加上一个安卓命名空间

有人可以解释一下为什么android:windowMinWidthMajor会奏效吗?

3个回答

21
根据这个链接中的说明:
min_width_major是:
平台期望在主轴方向(即屏幕为横屏时)上设置对话框宽度的最小值。此值可以是分数或者尺寸。
而min_width_minor是:
平台期望在次要轴方向(即屏幕为竖屏时)上设置对话框宽度的最小值。此值可以是分数或者尺寸。
在appcompat中,该值设置为65%。

10

@Ian Wong的答案是正确的。以下是更多详情:

android:windowMinWidthMajor -> 横屏时的min_dialog_width

android:windowMinWidthMinor -> 竖屏时的min_dialog_width

  • 然而,对话框的高度没有设置,只是紧贴着内容。

@dimen/abc_dialog_min_width_major和@dimen/abc_dialog_min_width_minor的实际值定义在以下路径中:

dimensions的实际值定义位置

@dimen/abc_dialog_min_width_major - 根据屏幕大小为65%45%@dimen/abc_dialog_min_width_minor - 根据屏幕大小为95%72%


0

请参阅原始文档,该文档介绍了Api 11中的值:

windowMinWidthMajor

窗口在屏幕主轴上允许的最小宽度。也就是说,在横向模式下。可以是绝对尺寸或该尺寸在屏幕上的比例。

可以是尺寸值,即附加有单位的浮点数,例如“14.5sp”。可用单位包括:px(像素)、dp(与密度无关的像素)、sp(根据首选字体大小缩放的像素)、in(英寸)和mm(毫米)。

可以是分数值,即附加有%或%p的浮点数,例如“14.5%”。%后缀始终表示基本大小的百分比;可选的%p后缀提供相对于某个父容器的大小。

常量值:16843606(0x01010356)

同样适用于windowMinWidthMinor(“也就是说,在纵向模式下。”)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接