【问题标题】:Android ListView background colors always showing greyAndroid ListView 背景颜色总是显示灰色
【发布时间】:2014-04-15 19:17:30
【问题描述】:

我有一个 ListView,我从自定义 ListAdapter 填充。在适配器内部(在getView(int, View, ViewGroup) 方法中)我使用setBackgroundColor(int) 设置View 的背景颜色。问题是,无论我将背景设置为什么颜色,它总是呈现出深灰色。值得注意的是,我使用的是 Light 主题。

相关(简化)代码:

AndroidManifest.xml:

<activity 
    android:name=".MyActivity"
    android:theme="@android:style/Theme.Light" />

MyAdapter.java:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(mContext);
    View av = inflater.inflate(R.layout.my_row, parent, false);
    av.setBackgroundColor(R.color.myRow_red);
    mName = (TextView) av.findViewById(R.id.myRow_name);
    mName.setText("This is a name");
    return av;
}

有什么想法/建议吗?

【问题讨论】:

    标签: android listview view themes


    【解决方案1】:

    您应该使用: setBackgroundResource(R.color.myRow_red) 而不是setBackgroundColor()在您的示例中,背景颜色分配有 ID,而不是资源中描述的实际颜色。

    【讨论】:

    【解决方案2】:

    您必须将 cacheColorHint 属性设置为列表所需的背景颜色。这是考虑 Android 对列表执行的绘图优化所必需的解决方法。

    请看这里:link text

    【讨论】:

    • 没错,如果你不需要动态改变你的背景颜色,你可以在你的my_row.xml布局文件中添加android:background="#FF0000"。
    • midj:在我的情况下这实际上不是真的,你只是看到一个超级简化的例子。
    • @fiXedd:那你的问题是什么?停用颜色缓存没有帮助吗?
    【解决方案3】:

    我遇到了一个类似的问题,分隔线变灰了。我发现其他解决方案没有效果,但我的ListView 上的android:divider="&lt;drawable,color, or whatever&gt;" 有效。

    【讨论】:

      【解决方案4】:

      您总是将整行包装在另一个视图中并在该视图上设置背景颜色。此视图将是该行的第一个(也是唯一的)子项。

      【讨论】:

        【解决方案5】:

        尝试这样做:

        av.setBackgroundColor(getResources().getColor(R.color.myRow_red));

        【讨论】:

          【解决方案6】:

          试试这个:

          setBackgroundColor(0xFF5DB9FB);
          

          【讨论】:

            猜你喜欢
            • 2011-02-10
            • 1970-01-01
            • 2023-03-06
            • 1970-01-01
            • 1970-01-01
            • 2020-04-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多