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 :

在此处输入图像描述

在 Galaxy Nexus 7 上: 在此处输入图像描述

我应该如何定义列表视图项目的高度???

4

4 回答 4

26

ListView项目高度是项目布局内容的高度,例如高度android.R.layout.simple_list_item_1。如果您想要不同的高度,请创建一个 xml 文件并放置一个android:layout_heightorandroid: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>
于 2013-04-19T11:04:24.167 回答
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(?)

于 2015-08-22T03:25:44.940 回答
3

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

于 2013-04-19T11:02:36.710 回答
0

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

于 2016-07-04T02:06:32.597 回答