LinearLayout minHeight 不适用于 weigth=“1”

LinearLayout minHeight not working with weigth="1"

提问人:Timothée Jeannin 提问时间:10/7/2012 最后编辑:EricSchaeferTimothée Jeannin 更新时间:8/23/2022 访问量:3794

问:

我整个下午都在尝试让属性工作。minHeight

我想要的是布局:linearMe

  • 当 ListView 只有几个元素时,从屏幕底部延伸到 ListView 的底部。
  • 例如,我需要能够用图片填充 linearMe 布局。

随着 ListView 变大,我希望布局能够:linearMe

  • 具有固定高度(位于屏幕底部时)和 ListView 以允许滚动。

我的问题是布局越来越小,因为 ListView 中的元素更多。当 listView 有足够的元素来填充屏幕时,布局就消失了。在这种情况下,看起来是无用的。linearMelinearMeminHeight

<LinearLayout
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent" >

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<LinearLayout
    android:id="@+id/linearMe"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#FF0000"
    android:minHeight="200dp" />

</LinearLayout>

enter image description hereenter image description here

我希望你能帮助我!:)

Java Android XML 布局

评论

0赞 Hradesh Kumar 4/4/2017
我解决了同样的问题,请参阅我的答案:- http://stackoverflow.com/questions/42832856/minheight-not-working-with-weight-1-in-linearlayout/43199823#43199823
0赞 Shahood ul Hassan 8/23/2022
早点切换到!ConstraintLayout

答:

0赞 Givi 10/7/2012 #1

同时添加到 ListView。 将它们(list & linearMe)属性都更改为Remove 'minHeight。android:layout_weight="1"android:layout_height"match_parent"

这样一来,每个视图将占据屏幕的一半。

评论

0赞 Timothée Jeannin 10/7/2012
那不是我想要的......例如,我想利用所有可用空间,因为 ListView 中只有一个项目。
1赞 Givi 10/7/2012
那么为什么不将 maxHieght 设置为 ListView呢?最好通过代码而不是xml动态地做这样的事情
1赞 Timothée Jeannin 10/7/2012
你确定maxHeight存在吗?我不这么认为。developer.android.com/reference/android/widget/ListView.html
0赞 theelfismike 10/7/2012 #2

您可能希望尝试使用“View”而不是“LinearLayout”来尝试间隔码布局。ViewGroup 类有时处理布局的方式略有不同。

评论

0赞 Timothée Jeannin 10/7/2012
那么我该如何向其添加内容呢?
0赞 theelfismike 10/7/2012
将 LinearLayout 保留为根布局,但将 View 用于间隔视图。(给定上面的示例代码)。
0赞 Timothée Jeannin 10/7/2012
假设我想在布局中放一张图片。您的解决方案如何实现?linearMe
0赞 theelfismike 10/7/2012
事实并非如此。给定您的示例代码,看起来您只是尝试在屏幕底部设置背景颜色。
0赞 Timothée Jeannin 10/7/2012
好吧,对不起。我会澄清我的问题。:)
0赞 Shahood ul Hassan 8/23/2022 #3

如果您愿意用作父容器,则以下 xml 应满足您的目的:ConstraintLayout

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constrainedHeight="true"
    app:layout_constraintBottom_toTopOf="@id/linearMe"
    app:layout_constraintTop_toTopOf="parent"
    tools:listitem="@android:layout/list_content" />

<LinearLayout
    android:id="@+id/linearMe"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:background="#FF0000"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toBottomOf="@id/list"
    app:layout_constraintHeight_min="200dp"
    android:orientation="vertical"
    />

</androidx.constraintlayout.widget.ConstraintLayout>

我所做的是,我定义了约束来链接两者并相互链接。 将确保 的最小高度为 200dp。 确保当有更多项目时,它不会躲在后面。listlinearMeapp:layout_constraintHeight_min="200dp"linearMeapp:layout_constrainedHeight="true"listlinearMe

我无法用一些数据来测试它来填充.您可以尝试一下并在此处发布您的反馈。ListView