如何设置 ListView 中的项目高度

11

我有一个ListActivity,我想根据设备高度更改项目的高度。

public class MainActivity extends ListActivity
{
            .
            .
            .
            setListAdapter(new ArrayAdapter<String>(MainActivity.this,
                android.R.layout.simple_list_item_1,mainMenuItems));
}

这是我在 Galaxy Nexus S 上的 ListActivity:

enter image description here

而这是在 Galaxy Nexus 7 上的效果: enter image description here

我该如何定义 ListView 中的项高度?

4个回答

26

ListView的item高度是item布局内容的高度,例如android.R.layout.simple_list_item_1的高度。如果您需要不同的高度,请创建一个xml文件并添加android:layout_heightandroid:minHeight属性。

这是一个修改过的simple_list_item_1,它引用了您的值。

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
    android:paddingRight="?android:attr/listPreferredItemPaddingRight"
    android:minHeight="@dimen/your_defined_minumum_height"/>

并且在你的dimen.xml文件中

<dimen name="your_defined_minumum_height">48dp</dimen>

5
ListView lvLogs = new ListView(this);
lvLogs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, logs) {

        @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.setMinHeight(0); // Min Height
            textView.setMinimumHeight(0); // Min Height 
            textView.setHeight(44); // Height
            return view;
        }
    });

注意:必须设置MinHeight和MinimumHeight!

将最小高度设置为0~20(或更高):setMinHeight(?) + setMinimumHeight(?)

然后,ListView中的TextView将具有正常高度(小于ListView的默认值)。

如果您想要以像素为单位指定高度,则使用setHeight(?)


3

您需要为ListView中的每个项创建自己的自定义布局文件。在那里,您可以编辑任何您想要的内容,并且可以获得很多好处。


0

使用屏幕高度(H)的信息为您的ListView自定义适配器。假设您希望屏幕显示9列(项目),则可以将每个项目的高度指定为H/9。通过这样做,您可以精确控制所有设备上ListView的外观。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接