1

我已经解决了太多 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>

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

谢谢

4

2 回答 2

3

为什么不只使用一个背景 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 :(
于 2013-08-03T16:20:32.610 回答
0

您可以使用颜色状态列表资源动态更改文本颜色: https ://developer.android.com/guide/topics/resources/color-list-resource.html

于 2015-06-17T12:30:19.550 回答