android studio中的按钮颜色不会改变
Posted
技术标签:
【中文标题】android studio中的按钮颜色不会改变【英文标题】:Button color doesn't change in android studio 【发布时间】:2022-01-02 13:52:17 【问题描述】:我有一个按钮,它有两种状态,其中它有不同的颜色,但颜色不会改变,因为按钮的颜色是由主题自动设置的。如何避免主题设置的颜色?
按钮代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity"
android:background="@color/purple_200">
<LinearLayout
android:id="@+id/startLayout"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:padding="10dp"
android:orientation="horizontal">
<Button
android:id="@+id/add_note"
android:layout_
android:layout_
android:layout_weight="1"
android:textSize="23sp"
android:background="@drawable/button_states"
android:text="@string/add_button" />
</LinearLayout>
</RelativeLayout>
国家代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/white"/>
<stroke android:color="@color/purple_200" android:/>
</shape>
</item>
<item android:state_pressed="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/purple_200"/>
<stroke android:color="@color/purple_500" android:/>
</shape>
</item>
</selector>
主题代码:
<resources>
<style name="Theme.NotifyMe" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
</style>
</resources>
【问题讨论】:
将形状保存在不同的文件中,然后将它们添加为可绘制对象,并尝试使用 state_selected 而不是 state_pressed。 使用 androidx.appcompat.widget.AppCompatButton 代替 Button。 【参考方案1】:要么使用 androidx 库 androidx.appcompat.widget.AppCompatButton 中的按钮,要么将 xml 中按钮 backgroundTintMode
的属性设置为可绘制对象。
理想情况下,您希望使用背景属性,因此最好使用它
<androidx.appcompat.widget.AppCompatButton
android:layout_
android:layout_
android:layout_marginStart="64dp"
android:text="Button"
android:background="@drawable/button_states"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="106dp" />
【讨论】:
【参考方案2】:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity"
android:background="@color/purple_200">
<LinearLayout
android:id="@+id/startLayout"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:padding="10dp"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/add_note"
android:layout_
android:layout_
android:layout_weight="1"
android:textSize="23sp"
android:background="@drawable/button_states"
android:text="Add Button" />
</LinearLayout>
</RelativeLayout>
【讨论】:
以上是关于android studio中的按钮颜色不会改变的主要内容,如果未能解决你的问题,请参考以下文章
IE9 中的 extjs 4 主题化问题,网格栏颜色和按钮不会改变
Android Studio基础项目-布局XML设置的实战-全屏显示登录界面,去除按钮深颜色