将元素定位在线性布局的不同方向上

时间:2015-04-11 07:12:25

标签: android android-linearlayout

在我的布局中,我有一个orientation="horizontal"的LinearLayout 我的问题是我想在textView下面设置一个ImageView,有什么方法可以做到这一点吗? (我知道我可以用RelativeLayout做到这一点,但我不想在这里改变LinearLayout)
它是我的代码:

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.0"
        android:layout_marginBottom="5dp"
        android:background="@drawable/shape_edit_text"
        android:gravity="center_vertical">

    <ImageView
            android:id="@+id/imgFlag"
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:layout_marginLeft="8dp"/>

    <TextView
            android:id="@+id/txtCountries"
            style="@style/Field.EditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.7"
            android:layout_marginRight="1dp"/>

    <EditText
            android:id="@+id/edtPhoneNumber"
            style="@style/Field.EditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.3"
            android:layout_marginLeft="1dp"
            android:hint="@string/phone_number"
            android:inputType="phone"/>
</LinearLayout>

3 个答案:

答案 0 :(得分:2)

是的,有办法做到这一点。您需要在布局中创建布局,并在内部布局中定位两个有问题的元素。它可以是具有垂直方向的线性布局,因此其内部的两个元素垂直堆叠。

答案 1 :(得分:2)

以下是 @IIya Kogan 描述的示例

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.0"
        android:layout_marginBottom="5dp"
        android:background="@drawable/shape_edit_text"
        android:gravity="center_vertical">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:id="@+id/imgFlag"
                android:layout_width="16dp"
                android:layout_height="16dp"
                android:layout_marginLeft="8dp"/>

            <TextView
                android:id="@+id/txtCountries"
                style="@style/Field.EditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.7"
                android:layout_marginRight="1dp"/>
        </LinearLayout>

        <EditText
            android:id="@+id/edtPhoneNumber"
            style="@style/Field.EditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.3"
            android:layout_marginLeft="1dp"
            android:hint="@string/phone_number"
            android:inputType="phone"/>
</LinearLayout>

答案 2 :(得分:0)

使用新的LinearLayout与android:orientation =&#34; vertical&#34;或使用RelativeLayou