【问题标题】:alternating colors of spinner items微调项目的交替颜色
【发布时间】:2011-03-27 03:29:34
【问题描述】:

我可以让项目在微调控件中以交替颜色显示

【问题讨论】:

  • 你的意思是交替还是替代?如果您的意思是替代,那么您能详细说明您的意思吗?

标签: android android-widget android-layout spinner


【解决方案1】:

是的,你可以。如果您关注Spinner Tutorial,那么您可以子类化您的适配器(传递您的项目的List)以产生交替的颜色效果:

ArrayAdapter<CharSequence> adapter =
        new ArrayAdapter(this, R.layout.simple_spinner_item, myList) {
    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        View view = super.getDropDownView(position, convertView, parent);
        if (position % 2 == 0) { // we're on an even row
            view.setBackgroundColor(evenColor);
        } else {
            view.setBackgroundColor(oddColor);
        }
        return view;
    }
}

如果您已经定义了自己的适配器并实现了getDropDownView,那么您可以在方法的末尾添加类似上面的内容。

编辑 - 根据 slund 的建议进行了更新。谢谢!

【讨论】:

  • 请注意,对于微调器下拉列表,您需要覆盖 getDropDownView。对于 Spinner,getView 返回该项目的微调器本身中显示的视图。 getDropDownView 用于获取要在列表中显示的视图。
  • 谢谢!我实际上并没有太多使用 Spinner,也不知道getDropDownView。我根据您的评论编辑了我的答案。
  • 当我尝试执行建议的操作时,我会收到以下错误类型 new ArrayAdapter(){} 的方法 getDropdowView(int, View, ViewGroup) 必须覆盖或实现超类型方法
  • 可能是拼写错误。确保方法名称正确。
  • 感谢它开始工作,但我不得不把 @SuppressWarnings({ "rawtypes", "unchecked" })
【解决方案2】:

您可以创建自定义适配器并更改每个项目的颜色。查看this链接了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多