Issue
I am trying to figure out how to change the color of drawableLeft/drawableRight of button programmatically . I have used drawable tint in my xml as mentioned below which works > api level 23 but not able to change the color < api level 23
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="VIEW ALL"
android:layout_centerInParent="true"
android:background="#00000000"
android:drawableLeft="@mipmap/ic_menu_black_36dp"
android:layout_centerVertical="true"
android:id="@+id/view_all"
android:textColor="@color/bottom_color"
android:drawableTint="@color/bottom_color"
/>
Button prev = (Button) findViewById(R.id.prev);
Drawable[] drawables =prev.getCompoundDrawables();
drawables[0].setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
prev.setCompoundDrawables(drawables[0],null,null,null);
Solution :
Drawable[] drawablesprev =prev.getCompoundDrawables();
//for drawableleft drawable array index 0
drawablesprev[0].setColorFilter(getResources().getColor(R.color.assessment_bottom), PorterDuff.Mode.SRC_ATOP);
//for drawableright drawable array index 2
drawablesprev[2].setColorFilter(getResources().getColor(R.color.assessment_bottom), PorterDuff.Mode.SRC_ATOP);
//for drawabletop drawable array index 1
drawablesprev[1].setColorFilter(getResources().getColor(R.color.assessment_bottom), PorterDuff.Mode.SRC_ATOP);
Solution
you are using PorterDuff.Mode.MULTIPLY
, so you are multiplying colors. assuming (name of your drawable) your icon is black - #000000
or as int
it will be 0
. then 0 * GRAY
(or any other color) will always give you 0
, so still black...
try other PorterDuff.Mode
s, e.g. PorterDuff.Mode.SRC_ATOP
or PorterDuff.Mode.SRC_IN
your current code will probably work with white version of icon, which should be colored properly with MULTIPLY
Answered By - snachmsm
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.