在我的应用程序中,我使用holoeverywhere。我想改变AlertDialog的外观,我被卡在警告对话框下方的按钮上。我看了一下如何在holoeverywhere中完成任务,我试图修改它。 这是我的推理的回溯:
在主题中有一些属性定义了 alertDialogTheme 和其他一些东西。我们稍后会回到 selectableItemBackground 。
<style name="Holo.Base.Theme" parent="Theme.AppCompat">
...
<item name="alertDialogTheme">@style/Holo.Theme.Dialog.Alert</item>
...
<item name="buttonBarButtonStyle">?borderlessButtonStyle</item>
...
<item name="selectableItemBackground">@drawable/item_background_holo_dark</item> *
...
</sytle>
所以我认为 alertDialogStyle 是我的目标,它在样式中进一步定义:
<style name="Holo.Base.Theme.Dialog" parent="Holo.Theme">
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowAnimationStyle">@style/Holo.Animation.Dialog</item>
<item name="android:windowBackground">@drawable/dialog_full_holo_dark</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowTitleStyle">@style/Holo.DialogWindowTitle</item>
<item name="borderlessButtonStyle">@style/Holo.Button.Borderless.Small</item>
<item name="buttonBarStyle">@style/Holo.ButtonBar.AlertDialog</item>
<item name="listPreferredItemPaddingLeft">16dip</item>
<item name="listPreferredItemPaddingRight">16dip</item>
<item name="windowActionBar">false</item>
<item name="windowActionModeOverlay">true</item>
<item name="windowAnimationStyle">@style/Holo.Animation.Dialog</item>
<item name="windowContentOverlay">@null</item>
<item name="windowMinWidthMajor">@dimen/dialog_min_width_major</item>
<item name="windowMinWidthMinor">@dimen/dialog_min_width_minor</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Holo.Theme.Dialog" parent="Holo.Base.Theme.Dialog" >
</style>
<style name="Holo.Theme.Dialog.Alert" parent="Holo.Theme.Dialog">
<item name="alertDialogStyle">@style/Holo.AlertDialog</item>
<item name="alertDialogTitleDividerColor">@color/holo_blue_light</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
<style name="Holo.Button.Borderless" parent="Holo.Button">
<item name="android:background">?selectableItemBackground</item>
<item name="android:paddingLeft">4dip</item>
<item name="android:paddingRight">4dip</item>
</style>
所以Holo.Theme.Dialog.Alert继承自Holo:base.Theme.Dialog,它有一个 borderlessButtonStyle 的属性,我想这定义了警告对话框的按钮。 样式Holo.Button.Borderless为其背景引用属性 selectableItemBackground 。属性在应用程序主题中设置。所以,我的理由是,如果我继承主题Holo.theme并设置 selectableBackground atribut,我的更改应该反映在自定义警告对话框按钮和使用此背景的其他所有内容中。
<style name="ThemeCustom" parent="@style/Holo.Theme>
…
<item name="selectableItemBackground">@drawable/custom_item_background </item>
…
</style>
但这不起作用。警报对话框按钮中未显示任何更改。我的推理有什么问题吗?