Android: 如何在使用选择器按下按钮时更改文本视图的颜色 XML

Android: how can I change the color of a textview when a button is pressed with selector XML

我有一个图像按钮。我创建了选择器 XML 以在按下时更改其背景...像这样:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/default_blue" />
</selector>

我在 java 中使用了它:

tempIBtn.setBackgroundResource(R.drawable.buttons_drawable_resource);

我在图像按钮上有一个 textview 和一个 pic(除了这个 imageButton 的图像。)

我想在按下 imageButton 时更改此 textview 和 pic 的颜色,但在选择器标记中我只能更改 imageButton 的属性而不是其他 textview 并且...我该怎么做?

您提到您希望更改 textview 的颜色,但从未提及 textview 中文本的颜色。这可以使用相同的选择器文件很容易地完成。以这种方式实现正确的实现,这样你就可以在 onclicklistener 中完成工作,无需处理按钮状态。将您的选择器文件修改为

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/default_blue" android:color="@color/default_blue"/>
<item android:state_pressed="false" android:drawable="@color/default_color" android:color="@color/default_color"/>
</selector>

在您的布局中 xml 为文本视图设置

android:textColor = "@drawable/buttons_drawable_resource"

注意:不要跳过在选择器中添加 android:state_pressed="false",因为我在上面给出了按钮的默认选择以及文本视图文本颜色,否则它会崩溃NPE.