【问题标题】:how to put 2 layouts on top of each others如何将 2 个布局放在彼此之上
【发布时间】:2013-10-25 19:24:27
【问题描述】:

我正在尝试将 2 个布局放在彼此之上,但它不起作用。有一个空间我不知道如何删除。

这是我的代码:

<LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical" 
                android:layout_gravity="bottom|center"
                android:weightSum="1">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="170dp"
                    android:layout_weight="0.5"
                    android:background="@drawable/column_white"
                    android:layout_gravity="bottom|center"
                    android:gravity="bottom"
                    android:orientation="vertical"

                    >
                    <LinearLayout 
                        android:layout_width="10sp"
                        android:layout_height="100sp"
                        android:background="@drawable/arrow_body"
                        android:layout_marginLeft="10sp"
                        ></LinearLayout>
                    <LinearLayout 
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content"
                       android:background="@drawable/arrow_shape"
                        android:layout_marginLeft="6sp"
                        ></LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="150dp"
                    android:layout_margin="25sp"
                    android:background="@drawable/column_blue"
                    android:gravity="center"
                    android:layout_weight="0.5" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="40 000 "
                        android:textColor="#ffffff"
                        android:textSize="25sp" />
                </LinearLayout>

            </LinearLayout>

RelativeLayout:

<RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="170dp"
        android:background="@drawable/column_white"
        android:gravity="bottom"

        android:layout_alignBottom="@id/second_part"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="10sp"
            android:layout_height="100sp"
            android:layout_marginLeft="10sp"
            android:background="@drawable/arrow_body" >
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="6sp"
            android:background="@drawable/arrow_shape" >
        </LinearLayout>

    </LinearLayout>

    <LinearLayout

        android:id="@+id/second_part"
        android:layout_width="wrap_content"
        android:layout_height="150dp"
        android:layout_margin="25sp"

        android:background="@drawable/column_blue"
        android:gravity="center" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="40 000"
            android:textColor="#ffffff"
            android:textSize="25sp" />
    </LinearLayout>
</RelativeLayout>

【问题讨论】:

  • 使用相对布局作为根视图。
  • 使用RelativeLayout或FrameLayout作为根
  • 我也试过了,修改了我的代码
  • 你能给我们看截图吗?
  • 阅读我的评论。在您的相对布局中,您仍然有您的 margin:25sp 在第二个。

标签: android layout


【解决方案1】:

使用相对布局将视图放在彼此的顶部,像这样

 <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center"
        android:background="#f00"
        android:orientation="vertical"
        android:weightSum="1" >

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="170dp"
            android:layout_centerInParent="true"
            android:layout_gravity="bottom|center"
            android:background="#fff"
            android:gravity="bottom"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="10dp"
                android:layout_height="100sp"
                android:layout_centerInParent="true"
                android:layout_marginLeft="10sp"
                android:background="#37c100" >
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="6sp"
                android:background="@drawable/arrow_shape" >
            </LinearLayout>
        </RelativeLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="150dp"
            android:layout_centerInParent="true"
            android:layout_margin="25sp"
            android:layout_weight="0.5"
            android:background="#0000ff"
            android:gravity="center" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="40 000 "
                android:textColor="#ffffff"
                android:textSize="25sp" />
        </LinearLayout>
    </RelativeLayout>

【讨论】:

    【解决方案2】:

    这现在也可以使用约束布局来完成。在我的用例中,我有一个 RecyclerView,当它为空时,必须被文本和按钮“覆盖”,以允许用户将项目添加到列表中。 (Big Nerd Ranch 编程书籍的一部分,挑战 13.3)

    代码如下(根据自己的需要改):

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 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">
    
        <LinearLayout
            android:id="@+id/no_crimes_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
            <TextView
                android:id="@+id/no_crimes_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:text="@string/no_crimes"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="@+id/recyclerView"
                app:layout_constraintStart_toStartOf="@+id/recyclerView"
                app:layout_constraintTop_toTopOf="@+id/recyclerView" />
    
            <Button
                android:id="@+id/new_crime_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:text="@string/new_crime"
                app:layout_constraintBottom_toBottomOf="@+id/recyclerView"
                app:layout_constraintEnd_toEndOf="@+id/recyclerView"
                app:layout_constraintStart_toStartOf="@+id/recyclerView"
                app:layout_constraintTop_toBottomOf="@+id/textView" />
    
        </LinearLayout>
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/crime_recyclerview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </android.support.constraint.ConstraintLayout>
    

    【讨论】:

    • 你没有解释为什么会这样。在我看来,RecyclerView 将位于 LinearLayout 之上,因为它位于层次结构的后面。
    【解决方案3】:

    在您的第二个LinearLayout 中,您有一个android:layout_margin="25sp"。 删除此行或至少不要设置 marginTop。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多