53

为什么当我对 ListView 使用 SimpleCursorAdapter 时,我在 ListView 中有这样的项目高度 -列表视图图像

(我的代码基于

但是当使用数组时 Listview 项目的高度很大

列表视图大

(我基于学习listview )

项目列表视图的行布局是

<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/text1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

所以我的问题是为什么在使用 ArrayAdapter 和 SimpleCursorAdapter 时行高会有所不同?

4

7 回答 7

134
  android:textAppearance="?android:attr/textAppearanceLarge" 

似乎没有效果。

  android:minHeight="?android:attr/listPreferredItemHeight" 

为我改变了高度

于 2010-11-25T07:10:46.693 回答
37

对我来说,诀窍不是设置高度,而是设置 minHeight。这必须应用于您的自定义适配器用于呈现每一行的任何布局的根视图。

于 2011-09-09T23:19:34.227 回答
10

您需要在列表项布局上使用填充,以便在项目的边缘添加空间(仅增加字体大小不会这样做)。

<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/text1"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:padding="8dp" />
于 2012-05-12T22:29:29.817 回答
4

我做了类似的事情:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View view = super.getView(position, convertView, parent);

    TextView textView = (TextView) view.findViewById(android.R.id.text1);
    textView.setHeight(30);
    textView.setMinimumHeight(30);

    /*YOUR CHOICE OF COLOR*/
    textView.setTextColor(Color.BLACK);

    return view;
}

你必须把两个字段 textView.setHeight(30); textView.setMinimumHeight(30); 或者它不会改变任何东西。对我来说它有效,我遇到了同样的问题。

于 2013-04-15T08:57:58.307 回答
1

列表视图项的高度根据其内容进行调整。在第一张图片中,没有内容。所以高度非常小。在第二张图片中,高度根据文本的大小增加。因为,您指定了 android:layout_height="wrap_content"。

于 2012-12-10T10:05:59.080 回答
0

这是我的解决方案;这是我在 BaseAdapter 子类中的 getView() :

public View getView(int position, View convertView, ViewGroup parent)
{
    if(convertView==null)
    {
        convertView=inflater.inflate(R.layout.list_view, parent,false);
        System.out.println("In");
    }
    convertView.setMinimumHeight(100);
    return convertView;
}

在这里,我将 ListItem 的最小高度设置为 100;

于 2016-07-19T16:08:09.540 回答
-1

这是我的解决方案(有一个嵌套的 LinearLayout):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/item"
            android:layout_width="match_parent"
            android:layout_height="47dp"
            android:background="@drawable/box_arrow_top_bg"
            android:gravity="center"
            android:text="全部收支"
            android:textColor="#666"
            android:textSize="16sp" />
    </LinearLayout>

</LinearLayout>
于 2013-02-18T16:39:31.340 回答