The documentation for the MaterialButton class表示: 不要使用android:background属性。MaterialButton管理其自己的可绘制背景,设置新背景意味着MaterialButton无法再保证其引入的新属性将正常工作。如果更改默认背景,MaterialButton无法保证良好定义的行为。 但是,the GitHub readme表示: 注:MaterialButton在视觉上与Button和AppCompatButton不同,其中一个主要区别是AppCompatButton在左右两侧都有4dp插图,而MaterialButton没有。 这里只提到了左/右inset,但是自述文件的Attributes部分显示支持所有四个inset:
9条答案
按热度按时间holgip5t1#
在材质零部件库中,
MaterialButton
具有默认样式insetBottom
和默认样式insetTop
,默认样式值为6dp
。您可以使用以下命令更改它:
如果你想改变背景色,你可以使用
app:backgroundTint
属性,或者你可以覆盖默认样式中的一些主题属性,然后你可以使用新的**materialThemeOverlay
**属性。在您的情况下,可以执行以下操作:
最后,从版本**
1.2.0-alpha06
开始,您可以在MaterialButton
中使用android:background
**属性。u4dcyp6a2#
The documentation for the
MaterialButton
class表示:不要使用
android:background
属性。MaterialButton
管理其自己的可绘制背景,设置新背景意味着MaterialButton
无法再保证其引入的新属性将正常工作。如果更改默认背景,MaterialButton
无法保证良好定义的行为。但是,the GitHub readme表示:
注:
MaterialButton
在视觉上与Button
和AppCompatButton
不同,其中一个主要区别是AppCompatButton
在左右两侧都有4dp
插图,而MaterialButton
没有。这里只提到了左/右inset,但是自述文件的Attributes部分显示支持所有四个inset:
因此,您可以将这些属性添加到
<MaterialButton>
标记中:v09wglhw3#
查看https://medium.com/@velmm/material-button-in-android-e4391a243b17,我发现
app:backgroundTint
(和app:backgroundTintMode
)可以工作,它改变了一种颜色,但不是一个可绘制的选择器。Also您可以将
<Button
替换为<android.widget.Button
。dw1jzc5e4#
如果你想使用渐变可绘制作为
MaterialButton
的背景,将您的
MaterialButton
设置如下:aij0ehis5#
如果您希望保留您的
并让MaterialButton尊重它,则必须设置
请注意,您也可以使用app:background代替,尽管我已经注意到足够多的突破性变化,我仍然喜欢上面的方法。
yshpjwxd6#
当我在一个按钮中使用状态可绘制时,我面临同样的问题,但它不改变按钮的背景。经过长时间的搜索,我找到了2个解决方案如下:
第一个解决方案是在values/themes.xml文件中将应用程序主题从MaterialComponents更改为AppCompat。然后状态可绘制将正常工作。
到
如果您仍然希望使用MaterialComponents主题,则可以尝试第二种解决方案。
使用〈android.widget.按钮代替〈按钮或〈com.google.android.材料.按钮.材料按钮
我在这里找到的第二个解决方案
ki1q1bka7#
google设计团队之所以决定将
android:background="@drawable/"
功能排除在材料库的初始版本之外,主要是为了让开发者能够更快地为应用程序构建一致且专业的设计,这是因为大多数像我这样的开发者在应用程序的设计和颜色方面做得很糟糕。另外,我在迁移到MDC时从google tutorial中找到了这个代码片段。
bbmckpt78#
只需使用android:backgroundTint
yi0zb3m49#
使用简单的
与按钮属性完美地工作。