Maximus
Maximus

Reputation: 1299

How to change shape colors in Drawable?

I have the following button:

<Button
    android:id="@+id/Button_Collect"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_marginBottom="16dp"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/CollectButtonShape" />

which looks like this:

enter image description here

which consists of the following background drawable:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
  <shape android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="2" android:useLevel="false" >
    <solid android:color="@android:color/transparent" />

    <stroke
        android:width="2dp"
        android:color="#FF27AE60" />
  </shape>
</item>
<item android:top="10dp" android:left="10dp" android:right="10dp" android:bottom="10dp">
    <shape android:shape="oval">
        <solid android:color="#FF27AE60" />
    </shape>
</item>
</layer-list>

How do I programmatically change the colors of the ring and inner circle (I need to do this on the the Touch event)???

Upvotes: 6

Views: 4206

Answers (3)

Maximus
Maximus

Reputation: 1299

Late reply, but I figured out that you can access each layer in a LayerList using FindDrawableByLayerId(). Then I have access to each object and set the appropriate color!

Upvotes: 5

Mikel
Mikel

Reputation: 1621

You could try using a ColorStateList, it serves the purpose you are after, I think.

Upvotes: 0

Dinesh Kumar
Dinesh Kumar

Reputation: 1293

It is possible by having different images in drawable. Consider, if you want to change the green color into black, you need to have black color circle in drawable and then try this code. This will help you..

On the button click event, use this code

public void onClick(View v) {
   if(v == ButtonName) {
     ButtonName.setImageResource(R.drawable.ImageName);
   }
}

Upvotes: 0

Related Questions