在MainActivity中如何修改AlertDialog弹窗的文字颜色
Android修改Dialog文字颜色解决方案
你已经在使用自定义主题R.style.MyDialogTheme,直接在主题中配置文字颜色是最稳定的实现方式,无需修改原有业务代码:
方法1:修改自定义Dialog主题配置
在项目的res/values/styles.xml或res/values/themes.xml文件中找到MyDialogTheme,添加对应文字颜色属性即可:
<style name="MyDialogTheme" parent="Theme.MaterialComponents.Light.Dialog.Alert"> <!-- 你已配置好的黑色背景 --> <item name="android:background">@android:color/black</item> <!-- 标题文字设为白色 --> <item name="android:textColorPrimary">@android:color/white</item> <!-- 内容文字设为白色 --> <item name="android:textColorSecondary">@android:color/white</item> <!-- 按钮文字设为白色 --> <item name="android:buttonBarPositiveButtonStyle">@style/DialogWhiteButton</item> <item name="android:buttonBarNegativeButtonStyle">@style/DialogWhiteButton</item> <item name="android:buttonBarNeutralButtonStyle">@style/DialogWhiteButton</item> </style> <style name="DialogWhiteButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog"> <item name="android:textColor">@android:color/white</item> </style>
修改完成后原有Kotlin代码无需调整,运行即可看到所有文字变为白色。
方法2:代码动态修改文字颜色
如果不想修改主题配置,也可以在Dialog渲染后动态修改控件属性,修改后的代码如下:
fun notificationofWinner(player: Int) { val alert = AlertDialog.Builder(this@MainActivity, R.style.MyDialogTheme) alert.setTitle("GAME OVER! Player $player wins!!!") alert.setPositiveButton("Ok") { dialog , Button -> } val dialog = alert.create() dialog.show() // 必须在show之后调用,否则会拿不到控件实例 // 修改标题颜色 val titleId = resources.getIdentifier("alertTitle", "id", packageName) dialog.findViewById<TextView>(titleId)?.setTextColor(Color.WHITE) // 后续如果添加了message内容,可打开下行注释修改内容颜色 // dialog.findViewById<TextView>(android.R.id.message)?.setTextColor(Color.WHITE) // 修改确定按钮颜色 dialog.getButton(AlertDialog.BUTTON_POSITIVE)?.setTextColor(Color.WHITE) }
内容的提问来源于stack exchange,提问作者Chris Marshall Iheacho
相关产品推荐
相关产品推荐

