Anko Alert对话框按钮文本与背景颜色一致显示异常问题
解决Anko Alert对话框OK按钮文字与背景同色的问题
我之前也碰到过一模一样的情况!这大概率是Anko的默认AlertDialog没适配好你的App主题,导致按钮文字颜色和背景色撞色了,下面给你几个实用的解决办法:
方法1:直接给OK按钮设置文字颜色
在okButton的回调里,通过按钮实例直接修改文字颜色,这是最直接的临时修复方案:
context!!.alert("this test message for the dialog aleat") { okButton { button -> context!!.toast("yeah it ok") // 替换成你项目里定义好的颜色资源ID button.setTextColor(ContextCompat.getColor(context!!, R.color.button_text_color)) } }.show()
方法2:给AlertDialog指定自定义主题
如果你希望整个对话框的样式更统一,可以先在styles.xml里自定义一个Dialog主题:
<style name="CustomAlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> <!-- 设置按钮文字颜色,替换成你需要的对比色 --> <item name="colorAccent">@color/your_accent_color</item> </style>
然后在显示对话框时指定这个主题:
context!!.alert("this test message for the dialog aleat") { okButton { context!!.toast("yeah it ok") } }.show(R.style.CustomAlertDialogTheme)
方法3:全局配置AlertDialog主题(一劳永逸)
如果你的App里所有Anko Alert都存在这个问题,可以在App的全局主题里设置默认的alertDialog主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- 保留你原有主题的其他配置 --> <item name="alertDialogTheme">@style/CustomAlertDialogTheme</item> </style>
这样所有用Anko创建的AlertDialog都会自动套用这个主题,不用每次单独设置。
本质上这个问题就是主题里的按钮文字颜色(通常是colorAccent)和按钮背景色对比度不足,只要调整其中一项就能解决啦~
内容的提问来源于stack exchange,提问作者Anil Ugale
相关产品推荐
相关产品推荐

