如何设置 ListView 的最大高度?

Posted

技术标签:

【中文标题】如何设置 ListView 的最大高度?【英文标题】:How can I set the maximum height on a ListView? 【发布时间】:2011-04-04 09:50:52 【问题描述】:

我想创建一个 UI,其中一半屏幕是 ListView,下半部分是另一个视图。不知道如何指定 ListView 的最大高度。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_
    android:layout_
    >
<TextView  
    android:layout_ 
    android:layout_ android:text="Hello StockTwits!"/>


<ListView android:layout_ android:layout_ android:id="@+id/ListView"></ListView><ViewFlipper android:id="@+id/ViewFlipper" android:layout_ android:layout_><LinearLayout android:id="@+id/LinearLayoutST" android:layout_ android:layout_><ImageView android:id="@+id/ImageView01" android:layout_ android:layout_ android:background="@drawable/icon"></ImageView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayoutChart" android:layout_ android:layout_>

<TextView android:id="@+id/TextView01" android:layout_ android:layout_ android:text="View 2"></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayoutDetails" android:layout_ android:layout_>
<TextView android:id="@+id/TextView02" android:layout_ android:layout_ android:text="View 3"></TextView>
</LinearLayout>
</ViewFlipper>



</LinearLayout>

【问题讨论】:

我在chintanrathod.com/…创建了一个解决方案 【参考方案1】:

您可以将两个元素的权重设置为 1。这将导致它们在屏幕上占用相同数量的空间,前提是两者都需要大于一半。

【讨论】:

【参考方案2】:

将您的父线性布局设置为“2” 然后将您的列表视图权重设置为 1,并将其他视图的权重也设置为 1

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:weightSum="2" >


<ListView
    android:id="@+id/ListView"
    android:layout_
    android:layout_
    android:layout_weight="1" >
</ListView><ViewFlipper
        android:id="@+id/ViewFlipper"
        android:layout_
        android:layout_
        android:layout_weight="1" >
<LinearLayout android:id="@+id/LinearLayoutST" android:layout_ android:layout_><ImageView android:id="@+id/ImageView01" android:layout_ android:layout_ android:background="@drawable/icon"></ImageView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayoutChart" android:layout_ android:layout_>

<TextView android:id="@+id/TextView01" android:layout_ android:layout_ android:text="View 2"></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayoutDetails" android:layout_ android:layout_>
<TextView android:id="@+id/TextView02" android:layout_ android:layout_ android:text="View 3"></TextView>
</LinearLayout>
</ViewFlipper>



</LinearLayout>

我已经更改了你的代码,现在试试这个

【讨论】:

【参考方案3】:

通过将最大高度设置为 200dp 解决

【讨论】:

你是如何将 ListView 的最大高度设置为 200dp 的?!看起来 ListView 有一个“minHeight”属性但没有“maxHeight”属性... 他可能做了android:layout_height="200dp" 如果你解决了,在高清(1080pxl)设备上测试你的视图,你永远不会得到不同分辨率设备的通用解决方案

以上是关于如何设置 ListView 的最大高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确设置列表视图的高度

安卓ListView 如何设置item的高度

UWP ListView下模板宽度问题

在 Android 中,如何设置 ListView 项的高度和宽度?

如何在android中以编程方式设置listview高度

如何设置 ListView 行高