从 Android Studio 4.1 开始,Android 背景可绘制对象在按钮中不起作用 [英] Android Background Drawable Not Working in Button Since Android Studio 4.1
问题描述
我发现从 Android Studio 4.1 开始,我无法通过在 android:background
上设置颜色来更改 Button
的背景颜色,只是没有效果.自定义 Drawable
也不能正常工作.
I find out that since Android Studio 4.1 I cannot change the background color of a Button
by setting color on its android:background
, just no effect. And custom Drawable
is not working as well.
我的背景Drawable
:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1.5dp"
android:color="@android:color/black" />
<solid
android:color="@android:color/white" />
<corners
android:radius="8dp" />
</shape>
我的按钮
:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add To Cart"
android:background="@drawable/background3"/>
结果:
推荐答案
Android Studio 4.1 新项目向导,对于它的许多模板,项目都使用 Material Components for Android 库.并且,它将默认主题设置为基于 Theme.MaterialComponents.DayNight.DarkActionBar
.
The Android Studio 4.1 new-project wizard, for many of its templates, has the project use the Material Components for Android library. And, it sets up the default theme to be based on Theme.MaterialComponents.DayNight.DarkActionBar
.
这样做的副作用是布局中的任何 元素都会变成
MaterialButton
小部件,而不是常规的 Button
小部件.MaterialButton
忽略 android:background
.
A side effect of this is that any <Button>
elements in a layout get turned into MaterialButton
widgets, not regular Button
widgets. MaterialButton
ignores android:background
.
如果您只想更改颜色,请使用 android:backgroundTint
或更改主题中的 colorPrimary
属性.
If all you want to do is to change the color, use android:backgroundTint
or change the colorPrimary
attribute in the theme.
如果您想要一个具有自定义背景的按钮,并且您的主题设置为使用 Theme.MaterialComponents
,您可以将布局中的 XML 元素切换为是
而不是 .这应该会导致 Android 的 Material 组件忽略该元素,并且您可以根据 XML 属性正常操作此按钮.
If you want a button that has a custom background, and your theme is set up to use Theme.MaterialComponents
, you could switch the XML element in the layout to be <android.widget.Button>
instead of <Button>
. This should cause the Material Components for Android to ignore that element, and you can manipulate this button normally with respect to XML attributes.
这篇关于从 Android Studio 4.1 开始,Android 背景可绘制对象在按钮中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!