windowMinWidthMajor和android:windowMinWidthMajor有什么区别

ale*_*sov 7 android

我想为ProgressDialog设置一个合适的样式.我喜欢默认的,但我想自定义它.我试过使用AppCompat对话框,但它们都为我的Dialog设置了一些奇怪的宽度和高度.

我发现从MaterialDialog扩展可以解决这个问题,所以这段代码可以工作:

<style name="ProgressDialogTheme" parent="MaterialBaseTheme.AlertDialog" >
</style>
Run Code Online (Sandbox Code Playgroud)

这是因为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>
Run Code Online (Sandbox Code Playgroud)

我发现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>
Run Code Online (Sandbox Code Playgroud)

但它不起作用

唯一的区别是MeterialDialog属性开头的andorid命名空间.

有人可以解释为什么android:windowMinWidthMajor 这个伎俩?

Ian*_*ong 13

根据这个链接:

Min_witdh_major是:

当平台沿主轴(即屏幕为横向)时,平台所需的最小尺寸为对话框的宽度.这可以是分数或维度.

而min_with_minor是:

当平台沿着短轴(即屏幕是纵向)时,平台所需的最小尺寸为对话框的宽度.这可以是分数或维度.

在appcompat中,此值设置为65%.


小智 5

@Ian Wong 的回答是正确的。以下是有关此的更多详细信息:

android:windowMinWidthMajor -> min_dialog_width 在横向

android:windowMinWidthMinor -> 纵向中的 min_dialog_width

  • 然而,对话框的高度没有设置,只是包装了内容。

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

为尺寸定义的实际值的位置

@dimen/abc_dialog_min_width_major-是65%45%取决于屏幕尺寸。 @dimen/abc_dialog_min_width_minor-是95%72%取决于屏幕尺寸。