【问题标题】:AlertDialog AppCompat width and heightAlertDialog AppCompat 宽度和高度
【发布时间】:2015-08-01 08:46:43
【问题描述】:

我对 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>

【问题讨论】:

  • &lt;item name="android:layout_width"&gt;50dp&lt;/item&gt;?
  • 它不工作。还是很大
  • 使用 DisplayMerics for Window 获取宽度
  • 如何只使用样式?

标签: android android-alertdialog


【解决方案1】:

我可以像这样调整宽度:

<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:

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

【讨论】:

【解决方案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>

【讨论】:

    【解决方案3】:

    如果是自定义对话框,则只能在新创建的 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 希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 2016-05-19
      • 1970-01-01
      • 2011-10-19
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      相关资源
      最近更新 更多