我已经解决了太多StackOverflow问题,但仍然无法正常工作。

我动态地(以编程方式)在活动中创建了许多按钮。我需要使用选择器来更改背景和文本颜色,具体取决于是否按下了按钮。

按下时,我的背景从黑色变为白色,但是我似乎无法更改文本颜色(或对此进行设置)-它只是默认为黑色。

这就是我所拥有的。

Java文件:

monthButtons[i].setBackgroundResource(R.drawable.button_background);
monthButtons[i].setTextColor(R.color.text_color);


button_background.xml:

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

    <item android:state_pressed="true"
        android:drawable="@color/white"/>

    <item android:drawable="@color/black"/>
</selector>


text_color.xml:

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


有人可以指出按下按钮时更改文本颜色的方法吗?请记住,我在这些按钮的布局文件中没有定义任何内容。

谢谢

最佳答案

您为什么不只使用一个后台xml?像这样:

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

<item android:state_pressed="true"
    android:drawable="@color/white"
    android:textColor="@color/black" />

<item android:drawable="@color/black"
      android:textColor="@color/white"/>
</selector>//Untested


并将其设置为按钮的背景。如果它不起作用,则可以始终以编程方式进行。希望这可以帮助。

这个怎么样:

button.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN )
    {
        button.setBackground("#000");
        edittext.setTextColor("#dedede");
        return true;
    }
    else
    {
        button.setBackground("#dedede");
        edittext.setTextColor("#000");
        return true;
    }
 return false;
})); // Untested. Sorry i'm away from pc :(

07-28 06:24