所以我对listview有一个相当讨厌的问题。我的应用程序工作正常,直到我的Droid 2上的Android 2.3.3更新。(似乎在三星Evo上工作正常)
此问题有几个方面。 1.空插槽中的背景始终为灰色。 2.列表中的最后一个条目在被选中之前似乎是不可见的。选中后,您可以看到黑色文本,但没有背景。 3.列表中的其他/旧条目显示正确的背景颜色。
我已经尝试了很多东西,似乎没有什么能解决这个问题。 想法?
Listview定义
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:gravity="left|center"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:paddingLeft="1px">
<TextView android:text=""
android:id="@+id/list_view_text_view"
android:layout_width="wrap_content"
android:textSize="13sp"
android:singleLine="false"
android:layout_height="wrap_content"
android:layout_marginLeft="1sp">
</TextView>
</LinearLayout>
listview的主要布局
<ListView android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignRight="@+id/Button06"
android:layout_below="@+id/TextView01"
android:layout_alignLeft="@+id/TextView01"
android:layout_marginBottom="2sp"
android:layout_marginRight="2sp"
android:layout_marginLeft="2sp"
android:layout_above="@+id/EditText01"
android:transcriptMode="normal"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:gravity="bottom"
>
</ListView>
Listveiw适配器
private class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public EfficientAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return comment_list.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listview, null);
holder = new ViewHolder();
holder.text = (TextView) convertView
.findViewById(R.id.list_view_text_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(comment_list.get(position).toString());
return convertView;
}
class ViewHolder {
TextView text;
}
}
这是我用来尝试在主程序中设置背景的代码。
list_view_comments.setBackgroundResource(R.color.color_con);
list_view_comments.setDrawingCacheBackgroundColor(R.color.color_con);
list_view_comments.setBackgroundColor(R.color.color_con);
list_view_comments.setCacheColorHint(R.color.color_con);
答案 0 :(得分:12)
您的问题与SO上的此问题相同... Listview background is grey on Droid 3
以下是摩托罗拉为解决方案提供的解决方案...... http://community.developer.motorola.com/t5/MOTODEV-Blog/Why-Does-My-ListView-Look-Different/ba-p/17462
基本上他们(摩托罗拉)正在使用您必须使用
等属性覆盖的自定义主题android:overScrollFooter="@null"
编辑 - 上面的链接由于某种原因不再有效。但是,正如凯文在评论中所说,解决方案仍然有效。
答案 1 :(得分:1)
嗨使用这可能对你有帮助。
list_view_comments.setBackgroundColor(getResources().getColor(R.color.color_con));
答案 2 :(得分:1)
如何在OS v2.3中绘制ListView,以便上一行项目下方的额外空间显示指定的背景而不是灰色的默认页脚背景颜色:
overScrollFooter
对大多数版本来说都是不可接受的
只有在ListView下面没有其他小部件时,height="wrap_content"
本身才有效。
删除layout_alignParentBottom="true"
可以起作用,但也可能会损坏屏幕布局,具体取决于ListView与其他小部件的关系。
降低ListView高度的最简单方法是让Motorola OS v2.3想要绘制灰色的额外页脚空间是将ListView包装在另一个布局中,例如LinearLayout。将LinearLayout设置为您希望的任何大小,并将内部ListView的height
减少为"wrap_content"
。如果您需要更多说明和示例,请在此处导航:List View Footer Background on Android 2.3.3。