我正在尝试自定义AlertDailog。我对AlertDailog的默认布局没问题,所以我不想为我的dailog设置任何特定的视图,我只是想改变文字颜色,背景颜色等小东西。
我尝试了两种方法,这似乎是正确的,但令人惊讶的是它们都不起作用。
首先,我尝试使用自定义样式创建AlertDailog:
AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.cust_dialog);
给我输出像
我不明白为什么盒子里面有一个dailog,甚至文字颜色也没有改变,所以我尝试了另一种方式。
我创建了一个ContextThemeWrapper并将其传递给AlertDailog.Builder
ContextThemeWrapper ctw = new ContextThemeWrapper(this,R.style.cust_dialog);
AlertDialog.Builder builder = new AlertDialog.Builder(ctw);
输出
仍未改变文字颜色或背景。
我的cust_dialog.xml是
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="cust_dialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@color/brown</item>
<item name="android:textColor">@color/red</item>
</style>
</resources>
有人可以告诉我,我做错了什么或者做错的方法是什么?
谢谢:)
答案 0 :(得分:0)
好吧,它比您尝试的解决方案更复杂,但为什么不构建完整的自定义对话框?
我已经做过这个,它就像一个魅力。 你只需要:
如果您需要示例代码,请与我们联系。
答案 1 :(得分:0)
不幸的是,提交对话框比仅更改属性windowBackground
和textColor
稍微复杂一些。你应该像这样定义你的主题:
<style name="YourAlertDialogTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
<item name="android:windowTitleStyle">...</item>
<item name="android:textAppearanceMedium">...</item>
<item name="android:borderlessButtonStyle">...</item>
<item name="android:buttonBarStyle">...</item>
</style>
我写了一篇完整的博客文章,详细介绍了如何定义和链接每个元素的样式here。你将能够做到这样的事情:
(请有比这更好的味道)