我刚刚在我的应用中更新了库版本,现在AlertDialog
按钮的文本颜色为白色。在此之前,如果我没记错的话,那就是colorAccent
属性指定它们。我尝试了许多不同的属性,但似乎没有一个属性能够发挥作用。
示例照片 - 在右下方,您可以看到非常隐蔽的按钮:
我当前的提醒对话框样式:
<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/website_main</item>
<item name="android:textColor">@color/website_main</item>
</style>
以我的主题风格:
<item name="android:alertDialogStyle">@style/AlertDialogStyle</item>
我使用的支持/设计/ appcompat的当前版本是:25.1.0
我在其中创建AlertDialog
:
android.support.v7.app.AlertDialog.Builder alertDialogBuilder = new android.support.v7.app.AlertDialog.Builder(activity);
alertDialogBuilder
.setCancelable(false)
.setPositiveButton(activity.getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
<UnrelatedLogic...>
}
});
return alertDialogBuilder.show();
在这里,我使用的ListPreference
也使用AlertDialog
:
android.support.v7.preference.ListPreference lang_preference = (android.support.v7.preference.ListPreference) findPreference("language_chooser");
有什么建议吗?
答案 0 :(得分:5)
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/teal</item>
<item name="android:textColorPrimary">@color/bg_3</item>
<item name="android:background">@color/bg_border</item>
</style>
在活动/适配器中使用样式
AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.AppCompatAlertDialogStyle);
答案 1 :(得分:2)
这有点令人困惑,但是alertDialogStyle
用于设置Dialog
框的样式,而不是它包含的任何子视图(尽管显然并非总是如此)。来自documentation:
将样式应用于布局中的单个
View
时,属性 由样式定义的仅应用于View
。如果是一种风格 应用于ViewGroup
,子View
元素将不会继承 style属性 - 仅直接应用的元素 style将应用其属性。但是,您可以应用样式 它适用于所有View
元素 - 通过将样式应用为主题。
因此,您必须将样式应用为主题;其中还有一个属性:
<item name="android:alertDialogTheme">@style/AlertDialogStyle</item>
最后,textColor
属性应该更改标题和正文文本的颜色,而不是按钮的文本颜色。您只需要应用colorAccent
属性为按钮文本着色:
<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/website_main</item>
</style>