【问题标题】:ListView is showing gapes in list items AndroidListView 在列表项 Android 中显示空白
【发布时间】:2013-01-08 00:30:39
【问题描述】:

我正在尝试通过 setListAdapter 和 Efficient Adapter 来实现 listView。我希望当列表显示时背景不应该重复。我的代码重复了 list.xml 的整个布局,因此我的列表项显示的差距很大。

现在我的列表是这样工作的:

但我想要这种类型的视图:

这是我的editText.xml,我在其中输入单词并打开一个列表视图。

<EditText
    android:id="@+id/start_edit"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_gravity="top|left"
    android:ems="10"
    android:hint="Type to search"
    android:paddingLeft="50dp" >

    <requestFocus />
</EditText>

此布局适用于 list.xml:

<RelativeLayout
    android:id="@+id/RelativeLayout_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/blue_cellbar" >  

list.xml 文件在 Effecient 适配器中重复布局:

这是我的代码:

listAdapter = new EfficientAdapter2(this);
    setListAdapter(listAdapter);



public static class viewHolder2 {
    TextView word;
    TextView meaning;
    ImageView image;
    ImageView image_color;
    RelativeLayout cell;

}



private class EfficientAdapter2 extends BaseAdapter implements Filterable,OnItemClickListener {

    private Context context;
    LayoutInflater inflater;

    public EfficientAdapter2(Context context) {

        this.context = context;
        inflater = LayoutInflater.from(context);

    }

    public int getCount() {


        //  if(SearchWordString.isEmpty()==false)
        //  {

        return SearchWordString.size();
        /// }

        //return 0;
    }

    public Object getItem(int position) {

        return position;
    }

    public long getItemId(int position) {

        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        viewHolder2 holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.list, null);

            ViewToUse=parent;
            holder = new viewHolder2();
            //  Log.i("View","is Null");
            convertView.setTag(holder);

        } else {

            //Log.i("View","is not Null");
            holder = (viewHolder2) convertView.getTag();
        }


        holder.cell = (RelativeLayout) convertView
                .findViewById(R.id.RelativeLayout_list);

        return convertView;
    }

更新

public class Start extends ListActivity implements OnTouchListener,

android.view.GestureDetector.OnGestureListener {

// ////////////////////////////////////// /////// /************* 内部类视图 ****************/ // /////////////////////////////////////// //// onCreate() { ListView list_to_use = getListView(); listAdapter = new EfficientAdapter2(this); list_to_use.setAdapter(listAdapter); list_to_use.setBackgroundColor(2); viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper1);

    search = (EditText) findViewById(R.id.start_edit);

    search.addTextChangedListener(myTextWatcher);

} 公共静态类 viewHolder2 { 文本视图字; TextView 含义; ImageView 图像; ImageView 图像颜色; 相对布局单元格;

}

// ////////////////////////////////////////////////////
/*********** INNER CLASS EfficientAdapter ************/
// ////////////////////////////////////////////////////

private class EfficientAdapter2 extends BaseAdapter implements Filterable,OnItemClickListener {

    private Context context;
    LayoutInflater inflater;

    public EfficientAdapter2(Context context) {

        this.context = context;
        inflater = LayoutInflater.from(context);

    }

    public int getCount() {


        //  if(SearchWordString.isEmpty()==false)
        //  {

        return SearchWordString.size();
        /// }

        //return 0;
    }

    public Object getItem(int position) {

        return position;
    }

    public long getItemId(int position) {

        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        viewHolder2 holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.list_search_item, null);

            ViewToUse=parent;
            holder = new viewHolder2();
            //  Log.i("View","is Null");
            convertView.setTag(holder);

            holder.word = (TextView) convertView.findViewById(R.id.title_list);
            holder.meaning = (TextView) convertView
                    .findViewById(R.id.textView_meaning_list);
            holder.image = (ImageView) convertView
                    .findViewById(R.id.image_list);
            holder.image_color = (ImageView) convertView
                    .findViewById(R.id.imageView_color_list);
            holder.cell = (RelativeLayout) convertView
                    .findViewById(R.id.RelativeLayout_list);

        } else {

            //Log.i("View","is not Null");

            holder = (viewHolder2) convertView.getTag();
        }

} }

ma​​in.xml:

<?xml version="1.0" encoding="utf-8"?>

<EditText
    android:id="@+id/start_edit"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_gravity="top|left"
    android:ems="10"
    android:hint="Type to search"
    android:paddingLeft="50dp" >

    <requestFocus />
</EditText>

<ViewFlipper
    android:id="@+id/viewFlipper1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="top|left"
    android:layout_marginTop="50dp" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/blue_home"
            android:fastScrollEnabled="true"
            android:smoothScrollbar="true"
            android:divider="@drawable/blue_dic"
            android:dividerHeight="250sp" >

        </ListView>

    </FrameLayout>

</ViewFlipper>

列表视图的行数:

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/image_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/abacus_thumbnail"
    android:scaleType="centerCrop" />

<ImageView
    android:id="@+id/imageView_color_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/blue_thumbnail" />

<TextView
    android:id="@+id/title_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/image_list"
    android:layout_marginLeft="20dp"
    android:layout_toRightOf="@+id/image_list"
    android:gravity="center"
    android:text="Abacus"
    android:textColor="#000000"
    android:textSize="30sp"
    android:textStyle="bold"
    android:typeface="sans" />

<TextView
    android:id="@+id/textView_meaning_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/title_list"
    android:layout_below="@+id/title_list"
    android:layout_marginTop="10dp"
    android:text="TextView"
    android:textColor="#000000"
    android:textSize="25sp" />

【问题讨论】:

  • 确保您的背景图片高度不那么大。这可能是问题所在。
  • 背景图片大小为1280x800,我将背景图片设置为:schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout_list_2" android:layout_width=" wrap_content" android:layout_height="wrap_content" android:background="@drawable/blue_dic" >// 主背景 // 这个用于项目背景

标签: android android-layout android-listview


【解决方案1】:

我希望你没有在&lt;ListView/&gt;下的布局文件中提供android:dividerHeight属性 如果是,请删除它。

【讨论】:

  • 我没有使用 listView 。我正在使用 EfficeintAdapter 完成 setListAdapter。它一次又一次地重复这个列表布局作为项目
  • 你不能在这里使用没有 ListView 的适配器。您使用的 ListActivity 必须有一个带有 ListView 的布局文件或使用其默认值。我对吗?或者我错过了什么。
  • 是的,我的活动正在扩展 ListActivity
  • Buddy 正如我预测的那样有 dividerHeight 属性 看到这个 去掉那个 250sp
  • 首先尝试删除两行....它不会在列表中显示任何分隔符。那是什么 blue_dic ?检查它的高度。理想的分频器不能大于 5 dip。请仔细检查。只有问题存在。
【解决方案2】:

当您设置了适配器类xml,父根时会出现此问题 match_content 而不是 wrap_content。 设置根内容高度 wrap_content

 As i can see in adapter layout there is no parent root like relative, linearlayout, Framelayout and ConstraintLayout etc.

【讨论】:

    猜你喜欢
    • 2013-12-10
    • 1970-01-01
    • 2017-02-17
    • 2016-06-13
    • 1970-01-01
    • 2012-06-24
    • 2018-05-31
    • 1970-01-01
    • 2018-07-18
    相关资源
    最近更新 更多