我试图根据按钮的状态是否启用,从样式xml设置背景颜色。
按钮XML:
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/loginButton"
style="@style/SuccessButton2"
android:layout_width="200dp"
android:layout_height="40dp"
android:text="Iniciar sesión"
android:gravity="center"
android:enabled="true"
/>
样式成功按钮2:
<style name="SuccessButton2" parent="TextAppearance.MaterialComponents.Button">
<item name="android:textColor">@color/button_text_color</item>
<item name="android:textSize">16sp</item>
<item name="android:background">@color/button_background_color</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">40dp</item>
<item name="android:textAllCaps">false</item>
<item name="fontFamily">@font/myriad_pro_regular</item>
</style>
XML按钮_背景_颜色:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/dark_gray"/>
<item android:state_enabled="true" android:color="@color/red"/>
我有同样的文本和它的工作良好:
button_text_color:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="#4E4E4E"/>
<item android:state_enabled="true" android:color="@android:color/black"/>
背景项不起作用,它只显示具有透明背景的按钮,无论是否启用。
您可以尝试使用android:backgroundTint
。
着色以应用于背景。
<item name="android:background">@color/button_background_color</item>
<item name="android:backgroundTint">@color/button_background_color</item>