Android 删除ListView项底部多余的空白

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

我在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="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)convertView=mInflater.flate(R.layout.list_项,父项,false)convertView = mInflater.inflate(R.layout.list_item, parent, false);