3

我对垂直线性布局中的重量感到困惑。我可以在水平线性布局中很好地使用权重,但如何在垂直线性布局中使用它。我有一个相对布局,其中包含一个具有一些文本视图和文本字段的衬垫布局(垂直)。我想要以下安排。

红线=相对布局,绿线=线性布局(垂直),蓝色=textview,黄色=texfields

<RelativeLayout 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:gravity="center" >
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/editText2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" />
    </LinearLayout>
</RelativeLayout>
4

5 回答 5

2

如果你使用 layout_weigth 参数,你应该有与 match_parent 上的线性布局方向相关的参数

所以:

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
于 2012-10-17T07:00:09.913 回答
1

-首先你可以在Relative layout 使用.LinearLayout

-其次,如果您想在 中使用子布局Relative layout,那么最好TableRow在您的中使用Relative layout,并安排其中的元素,就像您所展示的那样。

于 2012-10-17T07:00:10.617 回答
1
<RelativeLayout 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:gravity="center" >
     <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:layout_margin="10dp">
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" />

    </LinearLayout>
    <LinearLayout

        android:id="@+id/linearLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/editText2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" />

    </LinearLayout>
     <LinearLayout

        android:id="@+id/linearLayout3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/editText3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" />


    </LinearLayout>
     <LinearLayout

        android:id="@+id/linearLayout4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/editText4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" />


    </LinearLayout>
    </LinearLayout>
</RelativeLayout>
于 2012-10-17T07:49:59.953 回答
0

就我而言,在经历了一些垂直权重问题的游戏之后,我了解到 android 会环绕 ViewGroup 的内容,即使你设置的权重比其内容的大小更大,它也会环绕内容并给出其他视图的额外空间。

解决方案是根据您的需要添加边距顶部或底部。

于 2014-07-30T09:09:17.233 回答
0

我建议TableLayout为此使用 a 。如果我做对了,那么您正在尝试水平应用权重,以便在LinearLayout. 假设这是对的,那么你永远不会这样做。

LinearLayout在其内部水平或垂直排列所有元素。它不能双管齐下。因此,无论如何您都需要一个单独的行容器来实现您的目标。

TableLayout不仅使用该固有的行容器设计,而且还为这种布局提供了内置的列支持,而无需权重来管理。

于 2013-11-06T11:09:40.363 回答