按下时更改按钮文本颜色

时间:2012-02-17 20:56:44

标签: android android-button

我已将按钮设为透明,因此我希望按下按钮时按钮文本颜色会发生变化。是否可以仅使用xml文件执行此操作?

5 个答案:

答案 0 :(得分:38)

是的,你可以这样做:

布局/ main_layout.xml:

.....
    <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="bonjour !"
      android:textColor="@color/button_text_color"
    />
.....

颜色/ button_text_color.xml:

   <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:color="#c0c0c0" android:state_pressed="true"/>
     <item android:color="#ffffff"/>
   </selector>

答案 1 :(得分:9)

请参阅此文档中的州列表部分... Drawable Resources

您可以定义两个不同的Button xml文件,一个用于透明的“默认”状态,另一个用“红色”按钮定义为“已按下”状态。然后定义一个selector,用于切换不同状态的可绘制资源。

编辑:根据devunwired的评论,颜色状态列表资源可能更适合仅改变颜色而不是可绘制本身。

答案 2 :(得分:4)

我喜欢Konstantin Burov在另一个问题上提出的解决方案:Android customized button; changing text color

您实际上可以管理的状态多于按下和正常状态。但它应该解决问题。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Focused and not pressed -->
<item android:state_focused="true" 
      android:state_pressed="false" 
      android:color="#ffffff" />

<!-- Focused and pressed -->
<item android:state_focused="true" 
      android:state_pressed="true" 
      android:color="#000000" />

<!-- Unfocused and pressed -->
<item android:state_focused="false" 
      android:state_pressed="true" 
      android:color="#000000" />

<!-- Default color -->
<item android:color="#ffffff" />
</selector>

然后你可以使用你的按钮中的drawable改变文本颜色属性,如下所示。请注意,下面示例中的选择器名为&#34; button_text_color&#34;

  

机器人:文字颜色=&#34; @可绘制/ button_text_color&#34;

使用相同的drawable方法,您还可以解决按钮的背景颜色。只记得在选择器而不是使用&#34; android:color&#34;属性你需要使用&#34; android:drawable&#34;属性如下。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Focused and not pressed -->
<item android:state_focused="true" 
      android:state_pressed="false" 
      android:drawable="#ffffff" />

<!-- Focused and pressed -->
<item android:state_focused="true" 
      android:state_pressed="true" 
      android:drawable="#000000" />

<!-- Unfocused and pressed -->
<item android:state_focused="false" 
      android:state_pressed="true" 
      android:drawable="#000000" />

<!-- Default color -->
<item android:drawable="#ffffff" />
</selector>

然后在按钮本身中,注意这次选择器名称是&#34; button_background&#34;

  

机器人:背景=&#34; @可绘制/ button_background&#34;

答案 3 :(得分:1)

您必须在代码中执行此操作。试试这个:

    mBtn = ((Button) findViewById( R.id.button1 ));
    mBtn.setOnClickListener( new OnClickListener() {

        @Override
        public void onClick(View v) {
            mBtn.setTextColor( Color.RED );
        }
    });

宣告:

private Button mBtn;

答案 4 :(得分:1)

您必须在@drawable attributte

中设置textColor xml资源

以下是示例:Android customized button; changing text color