当用户按下listview项时,它会突出显示,并在放开时返回原始颜色。 我想以编程方式查询这些是什么颜色。
在超过14的Api版本上似乎我可以使用 (i)Theme.resolveAttribute(int resid,TypedValue outValue,boolean resolveRefs)或 (ii)Theme.obtainStyledAttributes(int [] attrs)
//-- (i) ---------------------------------------------
int getAttrVal(int attr)
{
TypedValue Val = new TypedValue();
getContext().getTheme().resolveAttribute(attr, Val, true);
return Val.data;
}
int colBgd = getAttrVal(android.R.attr.colorBackground);
int colAh = getAttrVal(android.R.attr.colorActivatedHighlight);
int colPh = getAttrVal(android.R.attr.colorPressedHighlight); // not sure if this or prev is what im looking for!?
// (ii) ---------------------------------------------
TypedArray Arr = getContext().getTheme().obtainStyledAttributes(
new int[] {android.R.attr.colorPressedHighlight});
int colPh2 = arrTst.getColor(0, 0xFF00FF);
//--------------------------------------------------
在较旧的Api版本上,此后无法使用 android.R.attr.colorActivatedHighlight / colorPressedHighlight 还没有。
(1)是否有以编程方式在api 8上获取这些颜色? (2)我对主题
中的其他一些功能感到有点困惑例如(iii)Theme.obtainStyledAttributes(int resid,int [] attrs)
// ---------------------------------------------
TypedArray Arr2 = getContext().getTheme().obtainStyledAttributes(
android.R.attr.colorBackground, new int[] {android.R.attr.colorPressedHighlight});
int colTst2 = arrTst.getColor(0, 0xFF00FF);
Here it seems not to matter what value I use for resid. What's the point of this parameter?
(3)R.attr和R.styleable有什么区别? R.attr应该是R.styleable的替代品(并且基本上有相应的条目),或者他们的目的只是部分重叠。
答案 0 :(得分:0)
您应该使用以下项目声明一个选择器:
<item android:drawable="@color/selected" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@color/selected" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@color/selected" android:state_focused="true"/>
<item android:drawable="@color/normal" android:state_focused="false" android:state_pressed="false"/>
并将其设置为listRow的背景