2012-12-01 103 views
1

我的ActionBar中有一个下拉导航列表。我想根据它们的位置以及当前选择的项目来更改列表项背景的背景颜色。更改Spinner下拉按钮的背景颜色

我已经创建了自己的类,它扩展ArrayAdapter和改变,像这样的背景:

@Override 
public View getView (int position, View convertView, ViewGroup parent) { 
    View v = super.getView(position, convertView, parent); 
    v.setBackgroundColor(Color.parseColor(VideoGroup.getColorForId(position))); 
    return v; 
} 

@Override 
public View getDropDownView (int position, View convertView, ViewGroup parent) { 
    View v = super.getView(position, convertView, parent); 
    v.setBackgroundColor(Color.parseColor(VideoGroup.getColorForId(position))); 
    return v; 
} 

然而,这将导致以下 - 请注意,实际列表中的项目看起来不错,但当前选择的一个才不是。

我如何获得Group 1这里的背景颜色来填充导航按钮的区域作为一个整体?

回答

1

不幸的是,Spinner本身是一个图像,所以它很难让它改变颜色,因为你理想上需要每种颜色的图像。例如,您将无法将文字背景扩展到三角形之外。它绝对可以完成,但它可能意味着定制相当多的东西。

另一种(也许更简单),以彩色遮罩应用到视图的方法是使用一个过滤器:

spinner.getBackground().setColorFilter(THE_COLOR_GOES_HERE, PorterDuff.Mode.MULTIPLY); 
+0

嗯,我几乎想通如此。至于你的选择:在这种情况下,我在哪里获得“微调”对象?我通过调用'mSpinnerAdapter = new FooAdapter(...)'和'getActionBar()来设置它。setListNavigationCallbacks(mSpinnerAdapter,mOnNavigationListener);' - 所以没有可以引用的spinner对象。 – slhck

+0

哦,它在ActionBar中?嗯,显然这不是直截了当:http://stackoverflow.com/questions/13343852/can-i-disable-actionbars-navigation-spinner – dmon

+0

是的,在第一句话中提到它:)噢,我想我会去然后离开它。谢谢你的帮助。 – slhck