我试图强制我的应用中某些ListView项目的背景颜色与其他所有项目不同。 Stack Overflow和其他地方的示例非常简单。但由于某种原因,背景颜色仅改变顶部TextView的宽度。请注意,在附加的图片中,每行有两个TextView项目。
我决定记录列表视图项的宽度,奇怪的是它的宽度为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。
答案 0 :(得分:1)
问题出在TextViews的宽度上,因为它们被设置为wrap_content。 将它们更改为
android:match_parent