Android Studio 4.2 中Button的Backgroud背景设置默认为蓝紫色且无法修改的问题,及Button控件中英文字母全部默认显示为大写的解决方法
Button背景色无法修改
问题简述
在修改Button的背景颜色时,始终无法修改颜色为设置的颜色,且颜色始终为默认的蓝紫色:
<Button
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/login"
android:background="#3498db"/>
<Button
android:id="@+id/btn_2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/sign_up"
android:background="@drawable/bg_button_2"
android:layout_below="@id/btn_1"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn_3"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/more"
android:background="@drawable/bg_button_empty3"
android:layout_below="@id/btn_2"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn_4"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/loading"
android:background="@drawable/bg_button_4"
android:layout_below="@id/btn_3"
android:layout_marginTop="10dp"
android:onClick="showToast"/>
上文中drawable/bg_btn等颜色为非默认的蓝紫色,自己更换了背景色。
实际模拟机效果(真机效果一样)如下,默认的颜色依然没有改变:
问题解决
我的解决方法:
默认的颜色设置来自于res/values/themes.xml
与夜间模式下的res/values-night/themes.xml
修改themes.xml
下的
<style name="Theme.HelloWorld" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
修改为
<style name="Theme.HelloWorld" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
添加.Bridge
即可
即可解决问题,修改后的效果图如下:
【还有以下方法补充作为参考】
建议直接添加
.Bridge
的方法,如不管用再试以下方法
- 给按钮增加一个属性app:backgroundTint="@null"
- 点击菜单中的 “baiFile” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”,清空 cache 并且重启。
- 更换旧版本(或许确实是版本问题)
- 将themes文件下的
问题总结
虽然不知道原理是什么,但是在搜索问题的时候很少人遇到这种问题,且遇到问题的多半是近期提问。总结来说应该是更新问题导致的,或者说因为我选择了空白项目导致使用了默认的themes。
Button英文字母全部默认显示大写
在Button中的字符串我都是小写,但是Button展示出来的(包括模拟器运行后都为大写)
解决办法很简单,在Button的属性里加上 android:textAllCaps="false"
即可
本文转自 Android Studio 4.2 中Button的Backgroud背景设置默认为蓝紫色且无法修改的问题,及Button控件中英文字母全部默认显示为大写的解决方法_iqqcode的博客,如有侵权,请联系删除。