在android中以编程方式更改形状颜色

Add*_*ddy 2 android android-button android-drawable android-shape

我试图以编程方式更改形状的颜色,但它不起作用.

这是形状

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#9F2200"/>
    <stroke android:width="2dp" android:color="#fff" />
</shape>
Run Code Online (Sandbox Code Playgroud)

这是我如何使用它作为按钮的背景

<Button                
  android:id="@+id/ibtn_EA_ColorPick_new"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" 
  android:layout_marginLeft="10dp"
  android:layout_marginRight="10dp"
  android:background="@drawable/round_button"
  />
Run Code Online (Sandbox Code Playgroud)

这就是我如何改变它的颜色

GradientDrawable bgShape = (GradientDrawable)btn_ColorPick.getBackground();
bgShape.setColor(Color.RED);
Run Code Online (Sandbox Code Playgroud)

但是,当我改变背景颜色时,它会从屏幕上删除按钮.

Man*_*ish 8

更改代码如下

GradientDrawable bgShape = (GradientDrawable)btn_ColorPick.getBackground();
 bgShape.mutate()
 bgShape.setColor(Color.RED);
Run Code Online (Sandbox Code Playgroud)