【问题标题】:Keep AlertDialog default layout params using custom window background使用自定义窗口背景保持 AlertDialog 默认布局参数
【发布时间】:2018-08-05 22:14:22
【问题描述】:

我需要一个带有自定义背景颜色和圆角的对话框。如何使用 AlertDialog 的自定义窗口背景保留默认布局参数?

目前,我的对话框的左右边距比常规对话框中的要小。此外,积极和中性等对话按钮从对话的边缘有更多的偏移。

<style name="DialogStuffTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:windowBackground">@drawable/bg_custom</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:gravity">center</item>
</style>

bg_custom.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:angle="270"
                android:startColor="@color/Cyan200"
                android:endColor="@color/Green200"
                android:type="linear" />
            <corners
                android:radius="@dimen/dialog_corner_radius" />
        </shape>
    </item>
</selector>

【问题讨论】:

  • 检查您的 /sdk/platforms/{Android API VERSION}/data/res/layout/alert_dialog_material.xml 以获得默认的警报对话框布局。您可以根据自己的要求进行调整。
  • 也许这会有所帮助:stackoverflow.com/questions/13669450/…

标签: android android-dialogfragment android-dialog


【解决方案1】:

在创建 AlertDialog 时应该使用这个:new AlertDialog.Builder(context, R.style.MyDialog)

<style name="DialogBarButton" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
    <item name="android:textColor">@color/button_bar_enabled_selector</item>
</style>

<style name="DialogBase" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:windowMinWidthMajor">@dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@dimen/dialog_min_width_minor</item>
    <item name="android:windowAnimationStyle">@style/Animation.AppCompat.Dialog</item>
    <item name="android:buttonBarButtonStyle">@style/DialogBarButton</item>
</style>

<style name="MyDialog" parent="DialogBase">
    <item name="android:windowBackground">@drawable/bg_custom</item>
</style>

值/dimens.xml:

<dimen name="dialog_min_width_major">65%</dimen>
<dimen name="dialog_min_width_minor">85%</dimen>

颜色/button_bar_enabled_selector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/colorAccent" android:state_enabled="true" />
    <item android:color="@color/TextDisabled"/>

</selector>

我不知道为什么在这种情况下对话框栏按钮的颜色发生了变化。为了解决这个问题,我必须使用带有颜色的选择器来表示启用和禁用状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多