如何使用LinearLayout将一个对象放置在另一个对象下面?

时间:2019-01-14 20:35:18

标签: android xml android-studio-3.0

我必须使用LinearLayout在Android Studio中制作这种小应用程序类型的东西。

说明说,我们必须对根标签使用vertical方向(顶部的文本为“ Here are my widgets”),然后对每行使用horizontal方向。我唯一的问题是如何将东西放在不同的行上?

应该看起来像:

第1行:“这是我的小部件”(垂直方向)

第二排: 按钮 图像按钮

行3: 复选框 切换

我的问题是,当我制作一个新的嵌套LinearLayout时,它会显示在第2行上。如何以horizontal方向制作第3行?我尝试以LinearLayout方向放置一个空的vertical东西以将两行分开,但这没用。如何使CheckBox和开关显示在按钮下方?我必须使用LinearLayout,并且方向必须是水平的。这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_message"
    android:textSize="30dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">


<Button
    android:gravity="fill"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:layout_width="200dp"
    android:text="@string/ButtonText" />

<ImageButton
    android:gravity="fill"
    android:layout_weight="1"
    android:layout_height="match_parent"
    android:layout_width="200dp"
    android:src="@drawable/flag"
    android:scaleType="centerInside"/>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <CheckBox
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <Switch
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</LinearLayout>
</LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

赞:

<?xml version="1.0" encoding="utf-8"?>

         

    <Button
        android:gravity="center"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:text="Button one" />

    <ImageButton
        android:gravity="center"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:scaleType="centerInside"/>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <CheckBox
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="50dp"
        android:text="Check Box"
        android:layout_weight="1"/>

    <Switch
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:layout_weight="1"/>

</LinearLayout>

答案 1 :(得分:0)

在这里,您的布局将简短地显示为:

<LinearLayout
    android:id="@+id/root_linear_layout"
    android:orientation="vertical"
    // other attributes... > 

    <TextView
        // This is ROW 1!
        //welcome text goes here />

    <LinearLayout
        // This is ROW 2!
        android:orientation="horizontal">

           <Button
               ... />

           <ImageButton 
                .../>

     </LinearLayout>   <-- Closing of the Row2 horizontal LinearLayout


    <LinearLayout
        // This is ROW 3!
        android:orientation="horizontal">

           <CheckBox
                ... />

           <Switch
                 .../>

     </LinearLayout> <-- Closing of the Row3 horizontal LinearLayout
</LinearLayout> <-- Closing of the root vertical LinearLayout

您可以根据需要填写其他属性(id,height,width等)。

我注意到您对每个android:layout_weight使用了View属性。如果使用此属性,则希望对android:weightSum的父布局使用View。例如,如果您需要ButtonImageButton的宽度比为50:50:

<LinearLayout
   android:weightSum="2">  <--- starting of Row2 LinearLayout

      <Button
          android:layout_weight="1"     ... />

      <ImageButton 
          android:layout_weight="1      ... />

</LinearLayout> <--- closing of Row2 LinearLayout

有关weight的更多详细信息,请参见here:)