AndroidStudio中由於程式碼問題造成的Selector無效問題
阿新 • • 發佈:2019-02-12
今天用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>