Android以编程方式创建选择器 [英] Android create selector programmatically
本文介绍了Android以编程方式创建选择器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何以编程方式创建选择器?
我有一个分配给TabWidget
的Tab indicator color
How can i create selector programmatically?
i have a xml selector that assigned to TabWidget
as Tab indicator color
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/bg_tab_unselected" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/bg_tab_selected" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/bg_tab_unselected_focused" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/bg_tab_selected_focused" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/bg_tab_unselected_pressed" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/bg_tab_selected_pressed" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/bg_tab_unselected_pressed" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/bg_tab_selected_pressed" />
</selector>
有什么方法可以动态创建上述xml代码?
Is there any way to create above xml code dynamically?
推荐答案
您可以像这样使用它:
public static StateListDrawable makeSelector(int color) {
StateListDrawable res = new StateListDrawable();
res.setExitFadeDuration(400);
res.setAlpha(45);
res.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(color));
res.addState(new int[]{}, new ColorDrawable(Color.TRANSPARENT));
return res;
}
然后:
view.setBackground(makeSelector(Color.RED));
这篇关于Android以编程方式创建选择器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文