android - Appcompat Alert Dialog Action 按钮背景 On pressed state

标签 android android-layout dialog android-alertdialog android-theme

我正在尝试来自 appcompat v7 22.1.1 的新 AlertDialog

它运行良好(在所有 android 版本中),如图像所示。

enter image description here

AlertDialog 的样式是这样的。 (现在我使用硬编码颜色值而不是颜色资源)

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

            <item name="colorPrimaryDark">#111111</item>

            <item name="colorPrimary">#00ddff</item>

            <item name="colorAccent">#0044aa</item>

            <item name="colorButtonNormal">#00aaaa</item>

            <item name="colorControlHighlight">#00ddff</item>

            <item name="alertDialogTheme">@style/AlertDialogTheme</item>

</style>
<style name="AlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert">
                <item name="colorAccent">#0044aa</item>
                <item name="android:background">#ffffff</item>
                <item name="android:textColorPrimary">#000000</item>
                <item name="android:windowTitleStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle">
                <item name="android:textColor">#0044aa</item>
                <item name="android:textAppearance">@style/TextAppearance.AppCompat.Title</item>
</style>

我的问题是,

1) 如何改变图像中圆形(灰色)的statePressed颜色?

2) android >= 21 中没有按下的颜色,这是什么 hack?

3) 我怎样才能有不同颜色的操作按钮(这可能吗)?

任何帮助都会很棒。

最佳答案

你可以使用像这样的样式属性

  • buttonBarButtonStyle
  • buttonBarNegativeButtonStyle
  • buttonBarNeutralButtonStyle
  • buttonBarPositiveButtonStyle

例子:

<style name="dialog_theme" parent="Theme.AppCompat.Dialog.Alert">
    <item name="buttonBarNegativeButtonStyle">@style/dialog_button.negative</item>
    <item name="buttonBarPositiveButtonStyle">@style/dialog_button.positive</item>
</style>

<style name="dialog_button">
    <item name="android:textStyle">bold</item>
    <item name="android:minWidth">64dp</item>
    <item name="android:paddingLeft">8dp</item>
    <item name="android:paddingRight">8dp</item>
    <item name="android:background">@drawable/dialogButtonSelector</item>
</style>

<style name="dialog_button.negative">
    <item name="android:textColor">#f00</item>
</style>

<style name="dialog_button.positive">
    <item name="android:layout_marginLeft">8dp</item>
    <item name="android:textColor">#00f</item>
</style>

dialogBu​​ttonSelector 是我们自定义的可绘制选择器。

不幸的是,在 dialog_button 上设置背景破坏了我们的填充和边距,所以我需要重新设置它。

dialog_button 样式可以通过 Widget.AppCompat.Button.ButtonBar.AlertDialog 继承,但我发现它缺少像 textStyle 这样的样式 粗体

关于android - Appcompat Alert Dialog Action 按钮背景 On pressed state,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233879/

相关文章:

java - 如何调试接收 RECEIVE_BOOT_COMPLETED Intent 过滤器的广播接收器?

android - 如何修复 Error inflatting class null

android - 单击怪异的声音循环

reactjs - MUI 对话框 - 无法将 onClose 传递给对话框操作中的 onClick

c++ - 如何在 C++ 中将一个 .exe 链接到另一个 .exe

java - 为函数或方法创建位掩码参数

android - 在水平 RecyclerView 中添加垂直列

android - match_parent 破坏完整布局

angular - 动态更改 Angular 12 中垫子对话框的宽度/高度

android - android中C++与Java的通信