【问题标题】:how to set ListView item height如何设置 ListView 项目高度
【发布时间】:2013-04-19 10:59:58
【问题描述】:

我有一个 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 上:

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

【问题讨论】:

    标签: android android-listview android-activity


    【解决方案1】:

    ListView 项目高度是项目布局内容的高度,例如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>
    

    【讨论】:

      【解决方案2】:
      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 中的每个项目创建自己的自定义布局文件。在那里你可以编辑任何你想要的东西,你可以获得很多好处。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-15
            • 1970-01-01
            • 2015-03-16
            • 2012-11-29
            • 2011-03-13
            相关资源
            最近更新 更多