我有一個ListView,裏面有自定義元素。我想爲每個元素創建選擇器。選擇器本身不會很複雜,因爲它們只需處理背景顏色,而項目懸停/選定/等等。然而,這些選擇器的顏色必須來自外部來源,我需要能夠從變量中設置它們,所以一些簡單的靜態代碼將無法做到。
動態定義和使用選擇器
- 如何與所有它`參數編程的方式定義部門?
- 如何以編程方式將該選擇器分配給特定視圖?
我有一個ListView,裏面有自定義元素。我想爲每個元素創建選擇器。選擇器本身不會很複雜,因爲它們只需處理背景顏色,而項目懸停/選定/等等。然而,這些選擇器的顏色必須來自外部來源,我需要能夠從變量中設置它們,所以一些簡單的靜態代碼將無法做到。
動態定義和使用選擇器
StateListDrawable states = new StateListDrawable();
int yourBackgroundColor = Color.parseColor("#FFFFFF");
// Add specific color when your view has state 'pressed'
states.addState(new int[] {android.R.attr.state_pressed}, new ColorDrawable(yourBackgroundColor));
// Add other states wanted and associated drawable
// ...
// As StateListDrawable extend Drawable, you can use it as background for exemple
yourView.setBackground(states);
,只要你想進入你的StateListDrawable(:http://developer.android.com/guide/topics/resources/color-list-resource.html可用狀態的列表)您可以添加狀態爲多。 對於每種狀態組合,您可以設置特定的和動態的可繪製的。
可以指定多個狀態相匹配的繪製
states.addState(new int[] { -android.R.attr.state_focused,
android.R.attr.state_selected,
-android.R.attr.state_pressed}, ColorDrawable(yourBackgroundColor));
這個時候如果你的觀點不集中的顏色將被應用,選擇並沒有按下。
StateListDrawable states = new StateListDrawable();
int yourBackgroundColor = Color.parseColor("#FFFFFF");
// Add specific color when your view has state 'pressed'
states.addState(new int[] {android.R.attr.state_pressed},
new ColorDrawable(yourBackgroundColor));
// Add other states wanted and associated drawable
// ...
// As StateListDrawable extend Drawable, you can use it as background for exemple
yourView.setBackground(states);