1

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

我创建了自己的类,可以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此处的背景颜色以填充整个导航按钮的区域?

4

1 回答 1

1

不幸的是,Spinner 本身就是一个图像,因此很难让它改变颜色,因为理想情况下,每种颜色都需要一个图像。例如,您将无法使文本的背景扩展到三角形之外。绝对可以做到,但这可能意味着要进行相当多的定制。

将颜色蒙版应用于视图的另一种(可能更简单)的方法是使用过滤器:

    spinner.getBackground().setColorFilter(THE_COLOR_GOES_HERE, PorterDuff.Mode.MULTIPLY);
于 2012-12-01T20:36:53.953 回答