AndroidX在按钮上设置背景颜色无效

时间:2018-11-28 12:20:29

标签: android androidx

我通常使用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>

4 个答案:

答案 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"现在似乎无效