Android 删除ListView项底部多余的空白
我在ListView项目底部有一些多余的空白问题。示例中,白色/负片空白处标有红色箭头 以下是我的布局XML:Android 删除ListView项底部多余的空白,android,android-layout,Android,Android Layout,我在ListView项目底部有一些多余的空白问题。示例中,白色/负片空白处标有红色箭头 以下是我的布局XML: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.thereversecookbook.ResultsList" >
<ListView
android:id="@+id/results_list_lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
</ListView>
</RelativeLayout>
和我的列表项XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<!-- cooking time -->
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:clickable="false"
android:longClickable="false"
android:paddingBottom="50dp"
android:textColor="#CC0033"
android:textSize="16sp" />
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_centerVertical="true"
android:clickable="false"
android:longClickable="false"
android:maxHeight="50dp"
android:maxWidth="50dp"
android:src="@drawable/ic_clock" />
<TextView
android:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/icon"
android:layout_centerVertical="true"
android:clickable="false"
android:longClickable="false"
android:textColor="#3399FF"
android:textSize="14sp" />
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:clickable="false"
android:isIndicator="true"
android:longClickable="false"
android:scaleX="0.5"
android:scaleY="0.5"/>
</RelativeLayout>
和CustomListAdapter:
public class CustomListViewAdapter extends ArrayAdapter<RowItem> {
Context context;
public CustomListViewAdapter(Context context, int resourceId, List<RowItem> items) {
super(context, resourceId, items);
this.context = context;
}
/*private view holder class*/
private class ViewHolder {
ImageView imageView;
TextView txtTitle;
TextView txtCookingTime;
RatingBar ratingBar;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
RowItem rowItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.txtCookingTime = (TextView) convertView.findViewById(R.id.desc);
holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
holder.ratingBar = (RatingBar) convertView.findViewById(R.id.ratingBar1);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.txtCookingTime.setText(rowItem.getCookingTime());
holder.txtTitle.setText(rowItem.getTitle());
//holder.imageView.setImageResource(rowItem.getImageId());
holder.ratingBar.setRating(rowItem.getRating());
holder.ratingBar.setStepSize((float)0.5);
return convertView;
}
}
公共类CustomListViewAdapter扩展了ArrayAdapter{
语境;
公共CustomListViewAdapter(上下文上下文、int resourceId、列表项){
超级(上下文、资源ID、项目);
this.context=上下文;
}
/*私有视图持有者类*/
私有类视窗持有者{
图像视图图像视图;
TextView-txtTitle;
TextView txtCookingTime;
比率杆比率杆;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
RowItem RowItem=getItem(位置);
LayoutInflater mInflater=(LayoutInflater)context.getSystemService(Activity.LAYOUT\u INFLATER\u SERVICE);
if(convertView==null){
convertView=mInflater.充气(R.layout.list_项,空);
holder=新的ViewHolder();
holder.txtCookingTime=(TextView)convertView.findViewById(R.id.desc);
holder.txtTitle=(TextView)convertView.findViewById(R.id.title);
holder.imageView=(imageView)convertView.findViewById(R.id.icon);
holder.ratingBar=(ratingBar)convertView.findViewById(R.id.ratingBar1);
convertView.setTag(支架);
}否则
holder=(ViewHolder)convertView.getTag();
holder.txtCookingTime.setText(rowItem.getCookingTime());
holder.txtitle.setText(rowItem.getTitle());
//holder.imageView.setImageResource(rowItem.getImageId());
holder.ratingBar.setRating(rowItem.getRating());
固定器。比率杆。设置步骤尺寸((浮动)0.5);
返回视图;
}
}
有人知道这是什么原因吗?非常感谢
convertView = mInflater.inflate(R.layout.list_item, null);
Bzzzt。不要使用充气()
方法。您希望使用三参数版本,传入您的convertView
(“膨胀的小部件最终将成为此…”)和false
(“…但不要让它们立即成为它的子部件”):
这在您的情况下尤其重要,因为如果RelativeLayout
是布局文件的根容器,而您不使用此版本的inflate()
方法,它会变得很奇怪
您可以在中阅读更多关于此的信息
Bzzzt。不要使用充气()
方法。您希望使用三参数版本,传入您的convertView
(“膨胀的小部件最终将成为此…”)和false
(“…但不要让它们立即成为它的子部件”):
这在您的情况下尤其重要,因为如果RelativeLayout
是布局文件的根容器,而您不使用此版本的inflate()
方法,它会变得很奇怪
您可以在中阅读更多信息。您是否自己在
列表适配器中扩展此布局?如果是,请发布您的代码。这就是@commonware@贾斯汀:你的ic_时钟的尺寸是多少?@ShobhitPuri我用它制作了ic_时钟,所以我相信我在res@ShobitPuri的每个可绘制文件夹中都有正确大小的副本。显示的是60 x 60 px。你自己在列表适配器中膨胀这个布局吗?如果是,请发布您的代码。这就是@commonware@贾斯汀:你的ic_时钟的尺寸是多少?@ShobhitPuri我用它制作了ic_时钟,所以我相信我在res@ShobitPuri的每个可绘制文件夹中都有正确大小的副本,显示的是60 x 60像素谢谢你的快速回复!添加了您的更改和对android:layout等的修改,最终开始在my list_item.xml中工作。下次当我在ListView中遇到空白问题时,我会记住这一点。再次感谢!对不起,为了清楚起见,我使用了convertView=mInflater.flate(R.layout.list_项,父项,false)但是我想这就是你在博客上的意思post@JustinFlowers:是的,对不起,我弄错了。我已将答案编辑为匹配。感谢您的快速回复!添加了您的更改和对android:layout等的修改,最终开始在my list_item.xml中工作。下次当我在ListView中遇到空白问题时,我会记住这一点。再次感谢!对不起,为了清楚起见,我使用了convertView=mInflater.flate(R.layout.list_项,父项,false)但是我想这就是你在博客上的意思post@JustinFlowers:是的,对不起,我弄错了。我已将答案编辑为匹配。
convertView = mInflater.inflate(R.layout.list_item, parent, false);