带有textColor的Android选择器

时间:2016-09-21 08:44:07

标签: android xml android-tv android-selector

我创建了一个选择器:

btn_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pressed -->
    <item android:drawable="@drawable/btn_bg_pressed" android:state_pressed="true" />

    <!-- focused -->
    <item android:drawable="@drawable/btn_bg_focused" android:state_focused="true" />

    <!-- default -->
    <item android:drawable="@drawable/btn_bg_default" />
</selector>

btn_bg_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/btn_pressed"/>
</shape>

btn_bg_focused.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/reality_fix_yellow"/>
</shape>

btn_bg_default.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="2dp"
        android:color="@color/btn_default_border_color" />
</shape>

我想在焦点改变时更改text color按钮。我尝试添加android:color="color_code"android:textColor="color_code"但失败了。 请帮助我如何使用选择器更改按钮的文字颜色?

3 个答案:

答案 0 :(得分:2)

以这种方式定义:

res/color目录

中创建 button_selector.xml 文件
<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:color="#000000" /> <!-- pressed -->
     <item android:state_focused="true"
           android:color="#000000" /> <!-- focused -->
     <item android:color="#FFFFFF" /> <!-- default -->
 </selector>

并在Button属性中定义这种方式。

<Button
    android:TextColor="@color/button_selector"
/>

答案 1 :(得分:1)

有一个技巧可以重复使用背景可绘制资源来改变文本的颜色。

$('.rootwizard') // String Validation .formValidation({ framework: 'bootstrap', excluded: ':disabled', live: 'enabled', icon: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, // Name Validation locale: validation_lang, fields: { readDoc1: { validators: { notEmptyDoc: { } } } }); 中,按以下方式声明按钮layout.xmlbackground

textColor

现在,在<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_bg" android:textColor="@drawable/btn_bg" android:text="Hello" /> 中,将drawable/btn_bg.xml定义为android:color="@color/your_color_code"属性:

item

您应该能够看到按钮的背景和文字颜色变化。

答案 2 :(得分:0)

您可以在自己的TextView类上实现此功能,该类扩展Android TextView类并覆盖onTouchEvent(MotionEvent event)

然后,您可以根据传递的MotionEvent修改实例文本颜色。

例如:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
       // Change color
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
       // Change it back
    }
    return super.onTouchEvent(event);
}