2016-09-21 48 views
-1

我創建了一個選擇:與文字顏色的Android選擇

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"但是失敗了。 請幫我一下如何用選擇器改變按鈕的文字顏色?

+0

add @ item android:drawable =「@ drawable/drawableName」android:state_pressed =「true」/> –

+0

@Anas Azeem您是否看到我的答案在下面。 – Ironman

回答

0

您可以在擴展了Android TextView類自己的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); 
} 
0

定義是這樣的:

創建button_selector.xml文件res/color目錄

<?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" 
/> 
0

有一個技巧,你可以重用你的背景可繪製資源來改變文本的顏色。

在你layout.xml,聲明你的按鈕backgroundtextColor以下列方式:

<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屬性:

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

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

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

你應該能夠查看您的按鈕的背景和文字顏色變化。