AlertDialog AppCompat的宽度和高度

时间:2015-05-20 08:16:54

标签: android android-alertdialog

我对AlertDialog的客户风格如下:

<style name="Testing.Dialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorAccent">@color/color_accent</item>
    <item name="android:textColorPrimary">@color/text_color_primary</item>
    <item name="android:background">@color/color_primary</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

我需要更改宽度和高度,因为它在我的平板电脑上太大了。有什么想法吗?

以下代码无效:

   <item name="windowMinWidthMajor">@dimen/abc_dialog_min_width_major</item>
   <item name="windowMinWidthMinor">@dimen/abc_dialog_min_width_minor</item>

3 个答案:

答案 0 :(得分:13)

我能够像这样调整宽度:

<style name="NarrowDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="windowFixedWidthMajor">70%</item>
    <item name="windowFixedWidthMinor">70%</item>
</style>

Dialog dialog = new AlertDialog.Builder(this, R.style.NarrowDialog)...

您可能还希望调整最小宽度:

<item name="windowMinWidthMajor">65%</item>
<item name="windowMinWidthMinor">65%</item>

属性详细信息:

  • windowFixedHeightMajor

沿着屏幕主轴的窗口固定高度,    也就是说,在肖像时。

  • windowFixedHeightMinor

窗口沿屏幕短轴的固定高度,即在横向时。

  • windowFixedWidthMajor

沿着屏幕主轴的窗口的固定宽度,即在横向时。

  • windowFixedWidthMinor

窗口沿屏幕短轴的固定宽度,即纵向时。

答案 1 :(得分:8)

如果是自定义对话框,则只能在新创建的XML文件中设置高度和宽度。但如果你使用AlertDialog.builder,那么使用它。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setTitle("Title");
alertDialog = builder.create();
alertDialog.show();
alertDialog.getWindow().setLayout(600, 400); //Controlling width and height.

并按照this希望它可以帮到你。

答案 2 :(得分:2)

我发现更简单的方法是在styles.xml中设置样式 然后设置 机器人:windowMinWidthMajor 和android:windowMinWidthMinor

<style name="Testing.Dialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:windowMinWidthMajor">90%</item>
    <item name="android:windowMinWidthMinor">90%</item> 
</style>