gpt4 book ai didi

android - 如何限制 GridLayout 中 ListView 的高度?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:20:51 26 4
gpt4 key购买 nike

我有一个 GridLayout 包含一个 ListView 和一个 TextView。添加项目时ListView 它将变大,并将其下方的 TextView 推出屏幕。我认为通过在 ListView 上设置 layout_gravity="fill"根本不会增长,而是占用所有可用空间。

如何配置 ListView 占用可用空间而不是扩大其下方的 View 并将其推出屏幕?

我正在寻找使用 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>

最佳答案

这个答案扩展了我对问题的评论并试图解释 why this cannot be done with XML via GridLayout's attributes .

正在添加 GridLayout 到框架允许解决一系列关于嵌套布局的缺点,其中一个是 "inability to control alignment along both horizontal and vertical axes simultaneously" 如文章中所述 New Layout Widgets: Space and GridLayout菲利普·米尔恩 (Philip Milne)。

此对齐控制由 layout_gravity 执行 参数其 description 表示参数 "specifies how a component should be placed in its group of cells", ( NOT within a root layout )。基本上,它与 LinearLayout 相同,文章中也提到了: "Alignment/gravity also works just like gravity in LinearLayout..." 正如我们所知,对于 LinearLayouts ,一旦 View 占据了屏幕的整个高度(如 ListView 在您的情况下),如果布局方向设置为 "vertical" .

如果我们看一下 GridLayout.LayoutParams在文档中,我们找不到任何参数允许单元组中的组件粘附到父布局的特定位置并保持在独立于同一组中其他组件大小的位置;类似于 layout_align[...] RelativeLayout 的参数。

我对 中缺少此类参数的最佳猜测 GridLayout 与嵌套布局相比,对齐控制更好。

我确定您知道使用以外的方法解决您的问题GridLayout's 属性。我只是建议一个让答案看起来很成功:

<GridLayout
... >

<RelativeLayout
... >

<TextView
...
android:id="@+id/tv"
android:layout_alignParentBottom="true" />

<ListView
...
android:layout_above="@id/tv">
</ListView>

</RelativeLayout>

</GridLayout>

关于android - 如何限制 GridLayout 中 ListView 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com