Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shadow color on buttons depending on state in XML - Android

I've created custom ToggleButtons in Android and since all buttons inherit from the same xml I want to change how they act depending on state, so when the state is checked I want to change the shadow color but this does not seem to possible with the current SDK.

I've created an xml file which holds button_colors:

<?xml version="1.0" encoding="utf-8"?>
<selector
   xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_checked="true"
    android:color="#FFFFFF"  />

<item
    android:color="#000000" />
 </selector>

But this only seems to work with text-color and not shadow color on the text. Is there something I'm missing? And rather not do this for every button manually in code since I want this to apply to every button in the app.

UPDATE EDIT:

My selector currently looks like this

<selector
xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:state_checked="true"
    android:drawable="@drawable/button_gradient_selected" />

<item
    android:drawable="@drawable/button_gradient" />

</selector>

But as I mentioned to the commentator below I can't seem to change the style/text-color-shadow from here since it only can take in a drawable it seems.

When I try to put in a different style on the button in here it force closes or either does not change the style depending on state. When I only try to put in the style here and have the drawable be set in the style it force closes. Either way it does not work it seems.

like image 381
Joakim Engstrom Avatar asked Feb 17 '11 07:02

Joakim Engstrom


2 Answers

Seems that the Android framework does not support this.

From TextView.java:

        case com.android.internal.R.styleable.TextView_textColor:
            textColor = a.getColorStateList(attr);
            break;

        case com.android.internal.R.styleable.TextView_shadowColor:
            shadowcolor = a.getInt(attr, 0);
            break;

They treat textColor and shadowColor differently.

like image 129
Randy Sugianto 'Yuku' Avatar answered Sep 23 '22 05:09

Randy Sugianto 'Yuku'


Please refer to my solution on a different StackOverFlow question. I extended TextView to give a working solution here. (Replace TextView with Button)

like image 42
Gilbert Avatar answered Sep 24 '22 05:09

Gilbert