我通常使用android:background或XML以简单的XML设置按钮背景色,或者使用setBackgroundColor编程设置,但是现在有了AndroidX库(我认为...),这些颜色对按钮颜色没有影响
似乎设置android:backgroundTint可以正常工作,但这仅适用于API 21及更高版本
我该如何实现?
示例:
这不应该产生带有红色背景按钮的布局...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="#af2222"/>
</LinearLayout>
答案 0 :(得分:3)
我在android x而不是<Button
中使用它,并且背景颜色会改变
<androidx.appcompat.widget.AppCompatButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:background="@color/colorAccent"
android:text="Done"
/>
答案 1 :(得分:2)
您可以尝试使用:UnicodeEncodeError: 'ascii' codec can't encode character '\u017c' in position 67: ordinal not in range(128)
并删除app:backgroundTint="#af2222"
,它也应支持<21
答案 2 :(得分:1)
您需要在按钮标签中添加样式,就像在材质设计上使用Androidx一样。
style="@style/Widget.MaterialComponents.Button"
此样式可让您将primaryColor设置为背景色。
因此您的整个代码如下:
<android.support.design.button.MaterialButton
style="@style/Widget.MaterialComponents.Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Messages"
android:minWidth="200dp"
app:cornerRadius=”16dp”
app:icon="@drawable/ic_action_setting"
app:cornerRadius="@dimen/_16sdp"
app:backgroundTint="@color/colorAccent"
app:iconTint="@color/light_pitch"
app:iconPadding="-12dp"
/>
干杯!
答案 3 :(得分:0)
正如svkaka's answer所述,我在xml中使用了app:backgroundTint="#af2222"
解决了这个问题。
我以编程方式使用了此
:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) statusButton.backgroundTintList = ColorStateList.valueOf(MY_COLOR)
else statusButton.setBackgroundColor(MY_COLOR)
还要注意,这对材料和支撑设计按钮都是必需的,因为两者上的android:background="#fff"
现在似乎无效