Android应用按钮颜色异常继承标题色,求指导修改标题及按钮颜色
按钮颜色继承标题颜色问题解决
问题原因
你的按钮文本颜色被标题颜色覆盖,大概率是这两个原因:
- 你设置的
android:foreground(@drawable/changing_show_graph_button_color)包含了颜色状态控制,直接覆盖了android:textColor的设置; - 应用/页面主题里的全局按钮文本颜色优先级更高,布局里的
textColor不生效。
解决办法
1. 检查前景Drawable文件
打开res/drawable/changing_show_graph_button_color.xml:
- 如果这个Drawable是状态选择器,看看里面是不是定义了不同状态下的颜色,把对应颜色改成你需要的
@color/darkgrey_spbsut; - 如果不需要这个前景的颜色效果,直接删掉布局里的
android:foreground和android:foregroundGravity属性,textColor应该就能正常生效。
2. 强制设置文本颜色(代码/样式方式)
如果主题优先级太高,试试在代码里动态设置:
findViewById(R.id.showGraphButton).setTextColor(getResources().getColor(R.color.darkgrey_spbsut));
或者定义专属按钮样式,覆盖主题设置:
<style name="MyButtonStyle" parent="Widget.MaterialComponents.Button"> <item name="android:textColor">@color/darkgrey_spbsut</item> </style>
然后给按钮加上style="@style/MyButtonStyle"。
3. 修改标题颜色(如果需要调整标题本身)
如果是ActionBar/Toolbar的标题,在主题里改:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar"> <item name="toolbarTitleTextColor">@color/你的目标颜色</item> </style>
如果是自定义TextView标题,直接给它加android:textColor="@color/你的目标颜色"即可。
你的代码快速测试版
先去掉前景属性,看看效果:
<Button android:background="@color/white" android:id="@+id/showGraphButton" android:clickable="true" android:enabled="false" android:gravity="left" android:text="Рассчитать корректуру " android:textColor="@color/darkgrey_spbsut" android:layout_width="match_parent" android:layout_height="40dp" android:backgroundTint="@color/white"> </Button>
内容的提问来源于stack exchange,提问作者OTeЦ OlegSey
相关产品推荐
相关产品推荐

