【发布时间】:2014-12-03 11:37:21
【问题描述】:
我有一个GridLayout,其中包含一个ListView 和一个TextView。添加项目时
到ListView,它会变大并将其下方的TextView 推出
屏幕。我认为通过在 ListView 上设置layout_gravity="fill"
根本不会增长,而是会占用所有可用空间。
如何配置ListView 以占用可用空间而不是
增长并将其下方的视图推出屏幕?
我正在寻找使用GridLayout 的解决方案。我知道在我的情况下
LinearLayout 也可以。然而,这只是一个最小的测试用例
说明我的问题。
如果可能,我不想以编程方式设置高度。
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:columnCount="1"
app:useDefaultMargins="true" >
<ListView
app:layout_gravity="fill" />
<TextView
android:text="TextView" />
</android.support.v7.widget.GridLayout>
【问题讨论】:
-
我理解你的问题,你希望你的 ListView 是一个静态高度并且可以单独滚动吗?如在 ListView 中滚动时,GridView 的其余部分不会滚动。
-
是的,ListView 应该占用所有可用空间。它也应该是可滚动的,但 GridView 不应该滚动,并且 ListView 下方的 TextView 应该始终可见。
-
你不能简单地通过直接使用 GridLayout 来做你想做的事。甚至文档也指出该小部件不支持重量的概念,并建议将子组件包装在 LinearLayout 中。
-
来自here: "GridLayout 不提供对权重原则的支持。因此一般情况下无法配置它来在多个组件之间分配多余的空间。一些常见的使用-cases 仍可按如下方式进行调整。要在单元组中的组件周围放置等量的空间;使用 CENTER 对齐(或重力)。要完全控制行或列中的多余空间分布;使用 LinearLayout 子视图来保存相关单元组中的组件..."
-
因此,由于
ListView's高度不是固定的并且会随着新内容的扩展而扩展,除非您使用 @,否则您无法通过 xml 属性实现所需的行为987654333@ 带重量或RelativeLayout作为ListView和TextView的包装器。
标签: android android-layout android-gridlayout