gpt4 book ai didi

android - GridLayout 在给定 fill_parent 高度时下推其子项并溢出

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:34 24 4
gpt4 key购买 nike

GridLayout 似乎总是将其子项推送到与他们的需要相对应的布局。例如下面的声明:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnCount="3"
android:orientation="vertical"
android:rowCount="4"
android:useDefaultMargins="true" >
...
<ImageView
android:id="@+id/main_image"
android:layout_column="1"
android:layout_columnSpan="2"
android:layout_row="3"
android:scaleType="fitStart" />
</GridLayout>

GridLayout 声明了 fill_parent,因此我希望它不会溢出。 GridLayout 应该采用父级的大小,在本例中是窗口(全高)。然而,在层次结构查看器中,GridLayout 被设置为垂直和水平的 Wrap_content。

因此 ImageView(这是一个大图像)或任何 TextView 将被推送以适应它们自己并因此溢出容器。

这可以在容器 GridView 适合父级的层次结构查看器中看到:

container grid view

当 ImageView 溢出时

image view

阅读文档,我明白需要设置重力。据我所知,我使用了各种重力选项和图像缩放选项,但效果不佳。使用 useDefaultMargins="false" 移除边距确实会改变布局溢出,从而导致问题转向 gridlayout。

我的问题如下:

  • 这是一个错误还是我错误地使用了 GridLayout
  • 如何强制 GridLayout 的子级适合其容器并填充剩余空间

最佳答案

其他布局的诀窍是给第一个元素一个 android:layout_weight="1.0"而对其他元素什么都不做。为什么它有效我不知道,但它确实如此。下面是一个简单的 XML,它显示了一个 ImageView、一个 TextView 和一个 Button。如果没有为 ImageView 分配 layout_weight 参数,文本和按钮会向下移动。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white"
android:orientation="vertical"
android:keepScreenOn = "true" >

<ImageView
android:id="@+id/imageView_surprise"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:scaleType="centerInside"
android:contentDescription="@string/accessibility_imageView_surprise"
android:layout_weight="1.0" />

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

<TextView
android:id="@+id/textView_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textSize="24sp"
android:gravity="center_horizontal" />

<Button
android:id="@+id/button_share"
style="@style/button_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

</LinearLayout>

</LinearLayout>

关于android - GridLayout 在给定 fill_parent 高度时下推其子项并溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127965/

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