2016-12-22 176 views
0

我有一个ImageButton的:更改形状颜色

<ImageButton 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    app:srcCompat="@drawable/round_color" 
    android:layout_below="@+id/lamps_list_room" 
    android:layout_alignStart="@+id/lamps_list_room" 
    android:layout_marginStart="69dp" 
    android:layout_marginTop="62dp" 
    android:id="@+id/color_picker_button" 
    android:background="@color/colorPrimaryDark"/> 

和形状:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#FFFFFF" /> 
    <corners android:radius="100dp" /> 
    <stroke 
     android:color="#FFFFFF" 
     android:width="2px"> 
    </stroke> 
</shape> 

什么是改变形状的实体颜色的最佳方法?

ImageButton imageButton = (ImageButton) ((Activity) mContext).findViewById(R.id.color_picker_button); 

Drawable drawable = imageButton.getBackground(); 
drawable.setColorFilter(0xff999999, PorterDuff.Mode.MULTIPLY); 

形状仍然是白色的...

编辑:

甚至当我尝试

Drawable drawable = mContext.getDrawable(R.drawable.round_color); 

ColorFilter filter = new LightingColorFilter(Color.BLACK, Color.BLACK); 

if (drawable != null) { 
    drawable.setColorFilter(filter); 
} 

它仍然无法正常工作!

+0

此[链接](http://stackoverflow.com/a/17825210/1907954)可以帮助你。它已经在SO中得到了回答。 – Bugdr0id

+0

可能重复的[以编程方式设置android形状颜色](http://stackoverflow.com/questions/17823451/set-android-shape-color-programmatically) –

回答

0

这里是示例代码

GradientDrawable bgShape = (GradientDrawable)YourView.getBackground(); 
bgShape.setColor(Color.BLACK); 
+0

@Yooouuri可能意味着以编程方式设置它 –

+0

@JohannBauer是的 – yooouuri

+0

你可以只改变背景颜色 –

0

这是我如何做相应处理它,改变代码。

GradientDrawable bgShape = (GradientDrawable) getChildAt(0).getBackground(); 
bgShape.setColor(); 
0

你可以试试这个:

GradientDrawable gradientDrawable= (GradientDrawable) color_picker_button.getDrawable(); 
gradientDrawable.setColor(Color.BLACK);