【问题标题】:Change dynamically only color of a Button that has a drawable in xml [duplicate]仅动态更改在 xml 中具有可绘制对象的按钮的颜色 [重复]
【发布时间】:2019-02-08 19:28:37
【问题描述】:

我的应用中的按钮在背景中有可绘制对象:

<Button
            android:id="@+id/loginbutton"
            android:text="@string/login"
            android:textColor="#FFFFFF"
            android:textSize="20sp"
            android:layout_width="135dp"
            android:layout_height="30dp"
            android:background="@drawable/buttonshape"
            android:layout_centerHorizontal="true"
            android:layout_below="@+id/til"
            android:layout_marginTop="50dp"
            />

可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
    android:radius="30dp"
    />
<solid
    android:color="@color/colorPrimary"
    />
<padding
    android:left="0dp"
    android:top="0dp"
    android:right="0dp"
    android:bottom="0dp"
    />
<size
    android:width="270dp"
    android:height="60dp"
    />
<stroke
    android:width="3dp"
    android:color="#878787"
    />

如果我这样做:

loginButton.setBackgroundColor(Color.parseColor(getBgColor()));

不仅颜色,而且按钮的整个形状都改变了,所以没有圆角等。我怎样才能只改变背景的颜色,保持我的drawable的其余部分?

谢谢。

【问题讨论】:

    标签: android android-drawable


    【解决方案1】:

    你有没有尝试过这样的事情:

    button.setBackgroundTintList(ContextCompat.getColorStateList(context, R.color.blue));
    

    【讨论】: