2014-11-15 2 views
0

ListView 항목의 맨 아래에있는 초과 공백 문제가 있습니다.ListView 항목의 하단에있는 공백을 제거하십시오.

<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; 
    } 
} 
http://i.stack.imgur.com/wpm7a.png

에서 빨간색 화살표로 표시된 흰색/부정적인 공간 예 여기 내 레이아웃 XML입니다

누구든지이 문제를 일으킬 수있는 아이디어가 있습니까? 많은 감사합니다!

+0

이 레이아웃을'ListAdapter'에서 직접 팽창시키고 있습니까? 그렇다면 코드를 게시하십시오. – CommonsWare

+0

@CommonsWare가 있습니다. –

+0

@JustinFlowers'ic_clock' 드로어 블의 크기는 무엇입니까? –

답변

4
convertView = mInflater.inflate(R.layout.list_item, null); 

Bzzzt. 해당 inflate() 메서드를 사용하지 마십시오. convertView ("부풀려진 위젯은 결국이 자식이 될 것입니다 ...")과 false ("... 그러나 그것들을 즉시 자식으로 만들지는 마십시오." ") : 그것은 당신의 레이아웃 파일의 루트 컨테이너 그리고 당신이하지 사용에게 inflate() 방법이 버전을 경우 RelativeLayout

귀하의 경우에 특히 중요
convertView = mInflater.inflate(R.layout.list_item, parent, false); 

이, 이상한 가져옵니다.

자세한 내용은 Dave Smith's "Layout Inflation as Intended" blog post에서 확인할 수 있습니다.

+1

빠른 답장을 보내 주셔서 감사합니다! 변경 내용을 추가하고 마침내'android : layout_etc'에 대한 수정 사항이 list_item.xml에서 작동하기 시작했습니다. 이번에는 ListView에 공백 문제가 있음을 기억할 것입니다. 다시 한 번 감사드립니다! –

+1

죄송합니다. 명확하게 말하면 'convertView = mInflater.inflate (R.layout.list_item, parent, false);'를 사용했지만 블로그 게시물에서 의미 한 바가 있다고 가정합니다. –

+0

@JustinFlowers : 예, 죄송합니다. 실수를했습니다. . 일치 할 답변을 편집했습니다. – CommonsWare

관련 문제