2016-12-22 2 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); 

форма по-прежнему белый ...

Edit:

Даже когда я пытаюсь

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

Возможный дубликат [Установить программный цвет андроидной формы программно] (http://stackoverflow.com/questions/17823451/set-android-shape-color-programmatically) –

ответ

0

здесь приведен пример кода

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

@Yooouuri, вероятно, предназначено для его программного программирования –

+0

@JohannBauer yes – yooouuri

+0

Вы можете изменить цвет фона только –

0

Это, как я это делаю, изменение кода соответственно.

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

Вы можете попробовать это:

GradientDrawable gradientDrawable= (GradientDrawable) color_picker_button.getDrawable(); 
gradientDrawable.setColor(Color.BLACK); 
Смежные вопросы