1. 程式人生 > >AndroidStudio中由於程式碼問題造成的Selector無效問題

AndroidStudio中由於程式碼問題造成的Selector無效問題

今天用AndroidStudio寫專案的時候用到Selector以設定按鈕點選效果,但是發現用了selector之後點選按鈕效果並沒有改變,如下圖

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/home"/>
    <item android:drawable="@drawable/home_press" android
:state_checked="true"/> </selector>


然後仔細查詢分析原因之後,感覺應該是由於第一個item沒有設定顯示屬性,所以每次進去之後,即使是點選按鈕,第一個item永遠都符合要求,所以一直未能正確顯示效果。

為了證實此猜想,把第一個item放到了第二個的位置,在選中時由於第一個item就符合要求,所以應該能夠正確顯示效果

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/home_press" android:state_checked="true"/> <item android:drawable="@drawable/home"/> </selector>


因此驗證了前面的猜想,所以在出現該問題的時候有兩種解決方案

1:更換幾個item的順序,

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
> <item android:drawable="@drawable/home_press" android:state_checked="true"/> <item android:drawable="@drawable/home"/> </selector>

2:更為嚴謹的邏輯,在此為了養成一個更好地習慣,建議使用此方法。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/home" android:state_checked="false"/>
    <item android:drawable="@drawable/home_press" android:state_checked="true"/>
</selector>