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