在水平线性布局中将textview设置在另一个textview下方

时间:2018-07-25 13:43:26

标签: android android-linearlayout

如何在 tvOperationName

下设置TextView对象 tvOperationDesc

这是我的布局xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin">

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

    <TextView
        android:id="@+id/tvOperationName"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:gravity="center_vertical"
        />

    <TextView
        android:id="@+id/tvOperationDesc"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:gravity="center_vertical"
        android:layout_below="@+id/tvOperationName"
        />

        <EditText
            android:id="@+id/txtMultiplier"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:inputType="numberDecimal"
            android:text="0"
            android:textAppearance="?android:attr/textAppearanceSmall" />

    <CheckBox
        android:id="@+id/cbChkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>

5 个答案:

答案 0 :(得分:1)

  

textview下方的textview采用水平线性布局

完全不可能。其明确提到的水平线性布局。因此,您的视图仅在水平方向对齐。

然后

如果将线性布局orientation设置为horizontal,则视图将水平对齐,将orientation设置为vertical,则视图将以线性方式垂直对齐,这意味着一对一

解决方案
 一种相对的布局足以满足您的要求。看看我的答案How relative layout views are aligned对您有帮助。

答案 1 :(得分:1)

请尝试以下代码。

<TextView
    android:id="@+id/tvOperationDesc"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="Description" />


<LinearLayout
    android:id="@+id/secondLinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tvOperationName"
        android:layout_width="0sp"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:gravity="center_vertical"
        android:text="Name" />


    <EditText
        android:id="@+id/txtMultiplier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:inputType="numberDecimal"
        android:text="0"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <CheckBox
        android:id="@+id/cbChkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

如果您要EditText和Checkbox与tvOperationName垂直放置在同一行,只需将secondLinearLayout的方向更改为vertical,并将gravity =“ center_horizo​​ntal”设置为secondLinearLayout。

答案 2 :(得分:1)

在相对布局中使用2个单独的水平线性布局,您可以根据需要调整权重和高度:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin">

    <LinearLayout 
        android:id="@+id/upLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="3">

        <TextView
            android:id="@+id/tvOperationName"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2" />

        <EditText
            android:id="@+id/txtMultiplier"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:inputType="numberDecimal"
            android:text="0"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <CheckBox
            android:id="@+id/cbChkBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/upLayout">

        <TextView
            android:id="@+id/tvOperationDesc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"/>
    </LinearLayout>

</RelativeLayout>

答案 3 :(得分:0)

LinearLayout添加另一个vertical,并将两个TextView都放置。

并删除LinearLayout子视图中的layout_below属性,因为该属性无用。

答案 4 :(得分:0)

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

<TextView
    android:id="@+id/tvOperationName"
    android:layout_width="0sp"
    android:layout_height="fill_parent"
    android:layout_weight="2"
    android:gravity="center_vertical"
    />

<TextView
    android:id="@+id/tvOperationDesc"
    android:layout_width="0sp"
    android:layout_height="fill_parent"
    android:layout_weight="2"
    android:gravity="center_vertical"
    android:layout_below="@+id/tvOperationName"
    />
</LinearLayout>