【问题标题】:Android Selectors Text ColorAndroid 选择器文本颜色
【发布时间】:2013-08-03 16:07:37
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: android button colors


    【解决方案1】:

    你为什么不只使用一个背景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 :(
    

    【讨论】:

    • 好的,它与 onTouchListener 一起工作。一直在使用 onClickListener 来处理其他事件。谢谢。
    • textColor 对我来说没有改变。你确定这能正常工作吗?
    • 不起作用。使用两个选择器作为背景和文本颜色,工作
    【解决方案2】:
    猜你喜欢
    • 2012-12-14
    • 2016-02-12
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多