【问题标题】:Divide height in 3 with LinearLayouts使用 LinearLayouts 将高度除以 3
【发布时间】:2016-09-11 11:26:11
【问题描述】:

我想在RelativeLayout 中放置3 个独立的LinearLayout 控件,并在3 个LinearLayout 控件之间划分可用高度,以便它们都有一个均匀的高度。

我尝试过weightSumgravity,但这些都没有我错误地认为的那样有效。我已经阅读了有关layout_weight 的信息,但LinearLayout 中没有。

我可以给它们每个设置一个静态高度,但我怎么知道应用程序可能在其上运行的每个设备的可用空间?

这是我当前的代码:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_image">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="top"
        android:weightSum="1">

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:weightSum="1"></LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="bottom"
        android:weightSum="1"></LinearLayout>

</RelativeLayout>

我仍在学习 Android 开发,因此我们将不胜感激。

【问题讨论】:

  • 我在大多数情况下使用“layout_weight”

标签: android android-layout android-studio android-linearlayout


【解决方案1】:

以下布局将有 3 个LinearLayouts 垂直均分

      <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="3"
            android:orientation="vertical"
            android:background="@drawable/bg_image">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1">
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1">
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1">
            </LinearLayout>

     </LinearLayout>

【讨论】:

  • 我接受这个解决方案,因为我最初想使用 LinearLayouts。
【解决方案2】:

我已阅读有关layout_weight 的信息,但LinearLayout 中没有此内容

不,你错了LinearLayout 支持使用 android:layout_weight 属性为单个孩子分配权重。

我想在RelativeLayout 中放置3 个独立的LinearLayout 控件,并在3 个LinearLayout 控件之间划分可用高度,使它们的高度均等。

最好在LinearLayout 中添加3 个单独的RelativeLayout,然后将android:weightSum="3" 分配给父LinearLayoutandroid:layout_weight="1" 给每个子RelativeLayout

【讨论】:

  • 为什么建议我使用相对布局?
  • 您要求使用相对布局,因此我建议将相对布局嵌套在线性布局中。这就是你不接受答案的原因吗?
  • 是的。尽管您的解决方案解决了我最初的问题,但我不明白为什么我应该将 RelativeLayout 放在 LinearLayout 中。我确信 LinearLayout 最适合我的需要,因为我需要在其中水平排列一些图标。
  • @android_noob 请在确定答案更好后接受答案。不要养成这样的习惯。你甚至把你的“谢谢”带回去了。您在上面清楚地告诉过 我想将 3 个单独的 LinearLayout 控件放置在 RelativeLayout 中,因此我建议您改为反转您的逻辑。这是另一种方式,但我认为您也想在内部使用 RelativeLayout。没关系。一旦您获得足够的声誉,您也可以投反对票。我不会停下来。
  • 我为什么要对你的答案投反对票?与其消极,试着去理解,你仍然没有提到为什么我应该改变设计以使用 3 个相对布局而不是我原来的 3 个线性布局。感谢您为帮助我所做的努力,如果我有足够的声誉,我会投赞成票,而不是投反对票。
【解决方案3】:

你在找吗

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"></LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"></LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"></LinearLayout>
</LinearLayout>

【讨论】:

  • @android_noob 不用担心 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多