按钮上的阴影颜色取决于XML中的状态 - Android

Joa*_*rom 11 xml android button

我在Android中创建了自定义ToggleButtons,因为所有按钮都继承自相同的xml,我想根据状态更改它们的行为方式,所以当检查状态时我想改变阴影颜色,但这似乎不可能当前的SDK.

我创建了一个包含button_colors的xml文件:

<?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>
Run Code Online (Sandbox Code Playgroud)

但这似乎只适用于文本颜色而不是文本上的阴影颜色.有什么我想念的吗?而不是在代码中手动为每个按钮执行此操作,因为我希望将其应用于应用程序中的每个按钮.

更新编辑:

我的选择器目前看起来像这样

<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>
Run Code Online (Sandbox Code Playgroud)

但正如我在下面的评论员中所提到的,我似乎无法从这里改变样式/文本颜色阴影,因为它似乎只能采用可绘制的颜色.

当我尝试在此处按钮上放置不同的样式时,它会强制关闭或根据状态不改变样式.当我只尝试在这里放置样式并且在样式中设置drawable它强制关闭.无论哪种方式,它似乎都不起作用.

Ran*_*ku' 8

似乎Android框架不支持此功能.

从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;
Run Code Online (Sandbox Code Playgroud)

它们以不同方式处理textColor和shadowColor.


Gil*_*ert 3

请参阅我在另一个 StackOverFlow 问题上的解决方案。我在这里TextView提供了一个可行的解决方案。(将 TextView 替换为 Button)