如何获取Android ListView项目的背景颜色一直延伸到最后?

时间:2017-02-13 17:44:13

标签: android listview background-color

我试图强制我的应用中某些ListView项目的背景颜色与其他所有项目不同。 Stack Overflow和其他地方的示例非常简单。但由于某种原因,背景颜色仅改变顶部TextView的宽度。请注意,在附加的图片中,每行有两个TextView项目。

enter image description here

我决定记录列表视图项的宽度,奇怪的是它的宽度为0.当然,可能是在记录(执行getView)时它尚未扩展他们满满的。

我在getView()调用中设置背景颜色,因此其代码如下所示。该项目的xml低于该值。

@Override
public View getView(int arg0, View arg1, ViewGroup arg2)
{
    if(arg1 == null)
    {
        LayoutInflater inflater = (LayoutInflater) m_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        arg1 = inflater.inflate(R.layout.listitem_assessments, arg2, false);
    }

    TextView title = (TextView)arg1.findViewById(R.id.tvTitle);
    TextView date = (TextView)arg1.findViewById(R.id.tvDate);

    if (arg0 <= m_list.size())
    {
        Attrs attrs = m_list.get(arg0);

        title.setText(attrs.m_sTitle);
        date.setText(attrs.m_sDetail);

        if (Character.isDigit(attrs.m_sActivationCount.charAt(0)))
        {
            if (!attrs.m_sActivationCount.equals("0"))
            {
                Log.i("Adapter", "     Width of list item view is: " + arg1.getWidth());
                arg1.setBackgroundColor(Color.YELLOW);
            }
            else
                Log.i("Adapter", "Width of list item view is: " + arg1.getWidth());
        }
    else
        arg1.setTag("");

    return arg1;
}

以下是ListView项目的xml资源:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="10dp"
    >

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_marginLeft="23dp"
        android:layout_marginTop="10dp"
        android:text="Assessment title"
        android:textStyle="bold"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/tvDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvTitle"
        android:layout_alignLeft="@+id/tvTitle"
        android:background="@color/LightBlue"
        android:text="date or author" />

</RelativeLayout>

注意我正在使用match_parent作为列表项宽度,所以看起来它会完全伸展,当然不会是0.也不是因为它不是wrap_content,它应该只延伸到最宽的TextView。

要清楚,我需要在测试中将背景颜色黄色一直延伸到右边。非常感谢任何帮助。

更新

我已经能够通过将代码移动到OnItemClickListener事件中来记录一些准确的宽度信息。整个ListView的宽度为1312,但ListView项目的宽度确实太短,并且随着黄色背景显示而变化。第一项是696.现在很清楚,布局并没有伸出来与父母相匹配。如何强迫它这样做?它看起来好像我正在使用match_content而不是match_parent作为layout_width。现在尝试在运行时(在膨胀时)验证layout_width。

1 个答案:

答案 0 :(得分:1)

问题出在TextViews的宽度上,因为它们被设置为wrap_content。 将它们更改为

android:match_parent