android listview项目高度

为什么当我使用SimpleCursorAdapter的ListView我有项目高度在ListView像这样 – 列表视图图像

(我的代码基于这个 )

但是,当使用数组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时行高有所不同?

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

似乎没有效果。

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

改变了我的身高

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

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

 <?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" /> 

我做了这样的事情:

 @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); 或者它不会改变任何东西。 对我来说,它的工作和我有同样的问题。

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

这是我的解决scheme(有一个嵌套的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> 

这是我的解决scheme; 这是我在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;