2013-08-03 39 views
0

我已经过了太多的StackOverflow问题仍然不能得到它的工作。Android的选择器文本颜色

我动态(编程)对我的活动创建一个数字按键。我需要使用选择取决于是否按下按钮或不改变背景和文字颜色。

我得到了它按下时,从黑到白改变背景,但我似乎无法得到的文本颜色改变(或将其设置为此事) - 它只是默认为黑色。

下面是我得到了什么。

的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> 

有人点我的方法来改变文字颜色时,按钮被按下?请记住,我没有在这些按钮的布局文件中定义任何内容。

谢谢

回答

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 :(
+0

我没有尝试,最初 - 也没有工作。 – Boots

+0

好吧,这与onTouchListener工作。使用onClickListener进行其他事件。谢谢。 – Boots

+2

文字颜色不会改变我。你确定这个工作正常吗? – JohnyTex