2015-08-28 99 views
6

我正在編寫一個Android應用程序,現在我正在設計它。我正在使用一個自定義主題,它是Theme.Holo.Light的子項。我非常喜歡Theme.Holo.Light,因爲它的按鈕在點擊並按住時有特殊效果。就像下面的圖片下方按鈕:爲什麼按鈕在改變顏色後會失去原來的行爲?

不要點擊: enter image description here

點擊: enter image description here

上按鈕已經變了顏色。現在當我點擊那個按鈕時,它沒有那個效果。我真的不明白爲什麼。任何人都可以告訴我爲什麼會發生這種情況,如何用彩色按鈕獲得相同的效果?

而且,彩色按鈕看起來更胖。

+0

我覺得你的效果和顏色的顏色按鈕是相同的,所以你沒有看到它。嘗試將按鈕的顏色更改爲其他,並參見 –

回答

1

這是因爲該按鈕使用選擇器根據點擊的狀態顯示不同的顏色/效果/繪圖。您可以查看Color State List Resource上的鏈接。

要創建你自己的你必須創建一個slecetor cml文件,並把它放在你的drawables文件夾中。

例如,

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/shape_btn_default_normal_gray" android:state_enabled="true" android:state_pressed="false"/> 
    <item android:drawable="@drawable/shape_btn_default_pressed_gray" android:state_pressed="true"/> 
    <item android:drawable="@drawable/shape_btn_default_disabled_gray"/> 
</selector> 

或顏色

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

若要將此你必須設置背景繪製在這樣的佈局XML。

<Button 
    android:id="@+id/my_btn" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Some text" 
    android:background="@drawable/selector_btn_default_gray"/> 
+0

「@ drawable/shape_btn_default_normal_gray」,「@ drawable/shape_btn_default_pressed_gray」等的定義在哪裏? – Sweeper

+0

這是一個例子,你可以使用任何你喜歡的,可繪製的,顏色等。 – Eoin

+0

似乎並不像我可以把十六進制顏色,但 – Sweeper

1

它不會失去它的行爲,你可以點擊(在你的第二個圖像)之後看到按鈕顯示相同的比例上面有...所以默認背景設置爲表明它是button(與padding左右一樣)並且可以更改爲顯示oncklick效果... 所以,當您將您的願望背景設置爲按鈕時......您需要完全更改當前的內容,然後您必須手動設置onclick效果..

相關問題