无法使用 Material 组件库设置按钮的背景颜色
Can't set background color of button using Material Components library
我的代码:
<Button
android:id="@+id/button_one"
style="@style/ButtonStyle"
android:text="@string/button_one" />
<style name="ButtonStyle">
<item name="android:textSize">32sp</item>
<item name="android:textColor">@drawable/background_button_text_color</item>
<item name="android:background">@drawable/background_button</item
</style>
background_button.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" android:state_pressed="true" />
<item android:drawable="@android:color/transparent" android:state_pressed="false" />
</selector>
background_button_text_color.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/black" android:state_pressed="true" />
<item android:color="@android:color/white" android:state_pressed="false" />
</selector>
按下按钮时我得到的是黑色背景而不是白色。不知道我做错了什么。有帮助吗?
我在 1.2.0-alpha06
并使用 Theme.MaterialComponents.DayNight.NoActionBar
。
您的风格:
<style name="ButtonStyle" parent="Widget.MaterialComponents.Button.TextButton">
<item name="android:textSize">32sp</item>
<item name="android:textColor">@color/text_color</item>
<item name="android:backgroundTint">@color/background_button</item>
<item name="rippleColor">@android:color/transparent</item>
<item name="cornerRadius">0dp</item>
</style>
您的选择器应该在颜色文件夹中
background_button:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/white" android:state_pressed="true" />
<item android:color="@android:color/transparent" android:state_pressed="false"/>
</selector>
text_color:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/black" android:state_pressed="true" />
<item android:color="@android:color/white" android:state_pressed="false" />
</selector>
并添加到您的按钮:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
颜色是我的
运行 进入同一问题,设置 app:backgroundTint="@null"
对我有用。在此处查看完整解决方案:https://github.com/material-components/material-components-android/issues/889#issuecomment-621194246
将其添加到按钮视图中
app:backgroundTint="@null"
要解决此问题,请执行以下操作之一:
- 在 xml 中或以编程方式添加
app:backgroundTint="@null"
-
btn.setBackgroundTintMode(null);
- 将主题
Theme.MaterialComponents.DayNight.NoActionBar
更改为
Theme.MaterialComponents.DayNight.NoActionBar.Bridge
两种解决方案都可以正常工作Reference
我的代码:
<Button
android:id="@+id/button_one"
style="@style/ButtonStyle"
android:text="@string/button_one" />
<style name="ButtonStyle">
<item name="android:textSize">32sp</item>
<item name="android:textColor">@drawable/background_button_text_color</item>
<item name="android:background">@drawable/background_button</item
</style>
background_button.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" android:state_pressed="true" />
<item android:drawable="@android:color/transparent" android:state_pressed="false" />
</selector>
background_button_text_color.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/black" android:state_pressed="true" />
<item android:color="@android:color/white" android:state_pressed="false" />
</selector>
按下按钮时我得到的是黑色背景而不是白色。不知道我做错了什么。有帮助吗?
我在 1.2.0-alpha06
并使用 Theme.MaterialComponents.DayNight.NoActionBar
。
您的风格:
<style name="ButtonStyle" parent="Widget.MaterialComponents.Button.TextButton">
<item name="android:textSize">32sp</item>
<item name="android:textColor">@color/text_color</item>
<item name="android:backgroundTint">@color/background_button</item>
<item name="rippleColor">@android:color/transparent</item>
<item name="cornerRadius">0dp</item>
</style>
您的选择器应该在颜色文件夹中
background_button:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/white" android:state_pressed="true" />
<item android:color="@android:color/transparent" android:state_pressed="false"/>
</selector>
text_color:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/black" android:state_pressed="true" />
<item android:color="@android:color/white" android:state_pressed="false" />
</selector>
并添加到您的按钮:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
颜色是我的
运行 进入同一问题,设置 app:backgroundTint="@null"
对我有用。在此处查看完整解决方案:https://github.com/material-components/material-components-android/issues/889#issuecomment-621194246
将其添加到按钮视图中
app:backgroundTint="@null"
要解决此问题,请执行以下操作之一:
- 在 xml 中或以编程方式添加
app:backgroundTint="@null"
-btn.setBackgroundTintMode(null);
- 将主题
Theme.MaterialComponents.DayNight.NoActionBar
更改为Theme.MaterialComponents.DayNight.NoActionBar.Bridge
两种解决方案都可以正常工作Reference