gpt4 book ai didi

安卓布局问题

转载 作者:太空狗 更新时间:2023-10-29 16:09:55 28 4
gpt4 key购买 nike

我这辈子都弄不明白。我正在尝试使用以下布局(垂直):

ImageView(填充所有可用空间)TextView(根据需要占用垂直空间)EditText(根据需要占用垂直空间)Button Button Button(等间距)

我有以下布局设置。 ImageView 当前设置为 200dip。这个值应该是多少才能填满所有可用空间?其他组件应该放在第一位, ImageView 应该得到剩下的。我已经搜索了一个例子,但还没有找到任何东西。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ImageView android:id="@+id/imgView"
android:layout_width="fill_parent"
android:layout_height="200dip"
android:layout_alignParentTop="true" />

<TextView android:id="@+id/lblDesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/PhotoDesc"
android:layout_below="@id/imgView" />

<EditText android:id="@+id/edtDesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/lblDesc" />

<!-- Bottom layout contains the three buttons - Take Photos, Transmit, and Setup. -->
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:weightSum="3">

<!-- Take photos button -->
<Button android:id="@+id/btnCamera"
android:gravity="center_vertical|center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/TakePhotos" />

<!-- Transmit button -->
<Button android:id="@+id/btnUpload"
android:gravity="center_vertical|center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/Upload" />

<!-- Setup button -->
<Button android:id="@+id/btnSetup"
android:gravity="center_vertical|center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/Setup"
android:layout_weight="1" />
</LinearLayout>

</RelativeLayout>

最佳答案

看起来您所需要的只是一个 LinearLayout,在 ImageView 上具有适当的权重以占据剩余空间。

layout_weight 与 LinearLayout 经常被误解。 LinearLayout 分两次测量其子项。首先,根据给定的 layout_width 或 layout_height 测量子项,然后在测量完所有子项后,根据其权重分配剩余的任何额外空间。

这意味着两件重要的事情:

  • 您永远不想在布局方向上使用带有权重的 match_parent(或旧版本中的 fill_parent)。 (即 layout_width="match_parent" 对于 orientation="horizo​​ntal"layout_height="match_parent"LinearLayout for orientation="vertical".) match_parent 将首先生效,消耗所有当前可用空间,不为剩余的 child 留下任何空间。
  • 当您想在多个具有权重的 View 之间平均分配空间或让一个 View 占用剩余空间而不考虑实际内容大小时,请使用 0dip 作为 layout_widthlayout_height 值。

试试这个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView android:id="@+id/imgView"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />

<TextView android:id="@+id/lblDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/PhotoDesc"
android:layout_below="@id/imgView" />

<EditText android:id="@+id/edtDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/lblDesc" />

<!-- Bottom layout contains the three buttons - Take Photos, Transmit, and Setup. -->
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">

<!-- Take photos button -->
<Button android:id="@+id/btnCamera"
android:gravity="center_vertical|center_horizontal"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/TakePhotos" />

<!-- Transmit button -->
<Button android:id="@+id/btnUpload"
android:gravity="center_vertical|center_horizontal"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/Upload" />

<!-- Setup button -->
<Button android:id="@+id/btnSetup"
android:gravity="center_vertical|center_horizontal"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:text="@string/Setup"
android:layout_weight="1" />
</LinearLayout>

</LinearLayout>

关于安卓布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130618/

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