2013-12-23 116 views
0

我想類似的onclick按鈕效應後,獲得在Android的默認,但與自己的顏色默認按鈕的方法

默認按鈕爲白色或淺灰色 當我觸摸按鈕的顏色改變爲一個時刻(橙色) 當釋放,按鈕的顏色回到原來的顏色(白色/淺灰色)

哪種方法正在使用這種效果?

我用onTouchListener()來設置觸摸的按鈕顏色 和OnClickListener()設置回原始顏色

但是,當我滾動組按鈕(內滾動型)當我觸碰任何一個按鈕,顏色改變,但是當釋放按鈕顏色不會變回來。我應該使用哪種方法?我該如何解決這個問題?

/////////////////// 我在值創建的顏色和限定2種顏色

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="white">#ffffff</color> 
    <color name="blue">#004080</color> 
</resources> 

創建新的文件夾的色彩和button_state.xml內此文件夾

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" 
     android:state_pressed="false" 
     android:drawable="@color/blue" /> 
    <item android:state_focused="true" 
     android:state_pressed="true" 
     android:drawable="@color/white" /> 
</selector> 

到我的按鈕我在XML文件中指定的代碼

android:background="@color/button_states" 

現在我的按鈕沒有巴ckground,但我不知道爲什麼

回答

2

創建XML文件中定義按鈕狀態和按鈕顏色取決於狀態,在資源例如button_states.xml /彩色文件夾:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:drawable="@color/pressed_button_color"/> 
    <item android:state_selected="true" 
      android:drawable="@color/selected_button_color"/> 
    <item android:drawable="@color/default_button_color"/> 
</selector> 

中值定義這些顏色/ colors.xml

和按鈕元素在你的佈局XML文件中使用此:

android:background="@color/button_states" 
+0

它不適合我。我在我的帖子 – Empi

+0

中解釋它是因爲你在button_states.xml中使用了不同的選擇器項目,我嘗試將下列項目添加到選擇器元素: 這個對我有用,所以你應該考慮添加默認和state_pressed項目 – gile

+0

即時,它現在完美,它是非常有用的解決方案。非常感謝 – Empi

0

的XML中的按鈕來設置它的背景下面

android:background="?android:attr/selectableItemBackground" 

這將自動處理顏色的變化是在Android的

如果默認的變化你想擁有自己的顏色,你需要做一個自定義選擇器並將其設置爲背景。像下面的東西應該工作:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="true" android:drawable="@drawable/list_selector_pressed" /> 
<item android:state_focused="true" android:drawable="@drawable/list_selector_focused" /> 
<item android:drawable="@color/selector_background" /> 

</selector> 

你繪製會是這樣的:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 

<solid android:color="@color/selector_background_pressed"/> 

</shape> 

不是100%肯定,但你可能只是能夠直接在選擇使用@色/ my_colour而不是引用一個drawable。不過這樣一來肯定會在你的項目工作

+0

嗯,我有錯誤,但它預計11拉特API或更高,我必須使用API​​ 8 – Empi

+0

創建像我已經發布應該爲你 – Dreagen

+0

我創造了選擇工作的一個自定義選擇,但它不」 t工作,我在我的主題中解釋它 – Empi

0

我建議你使用這個在線的。你只需要選擇你想要的顏色集,然後將資源分別放在你的項目資源文件夾中,然後將主題應用到你的應用程序中,在Manifest文件中使用這個在線工具設置的名稱名稱(默認情況下爲「主題名稱」)AppTheme )

<application android:debuggable="true" android:label="@string/app_name"android:theme="@style/AppTheme"> 
+0

我會嘗試一下,看起來不錯 – Empi