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的方法,如不管用再试以下方法

  1. 给按钮增加一个属性app:backgroundTint="@null"
  2. 点击菜单中的 “baiFile” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”,清空 cache 并且重启。
  3. 更换旧版本(或许确实是版本问题)
  4. 将themes文件下的

问题总结

虽然不知道原理是什么,但是在搜索问题的时候很少人遇到这种问题,且遇到问题的多半是近期提问。总结来说应该是更新问题导致的,或者说因为我选择了空白项目导致使用了默认的themes。

Button英文字母全部默认显示大写

在Button中的字符串我都是小写,但是Button展示出来的(包括模拟器运行后都为大写)

解决办法很简单,在Button的属性里加上 android:textAllCaps="false" 即可

本文转自 Android Studio 4.2 中Button的Backgroud背景设置默认为蓝紫色且无法修改的问题,及Button控件中英文字母全部默认显示为大写的解决方法_iqqcode的博客,如有侵权,请联系删除。

posted @ 2022-06-14 23:33  yassine  阅读(1988)  评论(0编辑  收藏  举报