ImageView中的一個可繪制的圖像資源被設置為一個選擇器。如何以編程方式訪問這個選擇器,來改變圖像的突出顯示和不突出顯示的狀態?
以下是選擇器的代碼:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/iconSelector">
<!-- pressed -->
<item android:state_pressed="true" android:drawable="@drawable/btn_icon_hl" />
<!-- focused -->
<item android:state_focused="true" android:drawable="@drawable/btn_icon_hl" />
<!-- default -->
<item android:drawable="@drawable/btn_icon" />
</selector>
我想用其它圖像代替btn_icon_hl 和btn_icon。
如果StateListDrawable已經定義後,沒有方法能改變單獨的狀態。
可以用以下的代碼定義一個新的方法:
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed},
getResources().getDrawable(R.drawable.pressed));
states.addState(new int[] {android.R.attr.state_focused},
getResources().getDrawable(R.drawable.focused));
states.addState(new int[] { },
getResources().getDrawable(R.drawable.normal));
imageView.setImageDrawable(states);