为什么layout_gravity设置为left / right在水平LinearLayout中没有效果?

时间:2016-07-06 17:58:30

标签: java android android-linearlayout textview

我试图在父母的左侧有两个TextView,另一个在右边。
我期待layout_gravity足以完成这个伎俩 但它不起作用。示例代码:

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="LEFT"
            android:textSize="14sp"
            android:layout_gravity="left"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RIGHT"
            android:textSize="14sp"
            android:layout_gravity="right"
            />
    </LinearLayout>

</LinearLayout>  

我做错了什么?

3 个答案:

答案 0 :(得分:2)

试试这个:

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="LEFT"
        android:layout_weight=".5"
        android:layout_gravity="start"
        android:gravity="start"
        android:textSize="14sp" />
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="RIGHT"
        android:layout_weight=".5"
        android:layout_gravity="end"
        android:gravity="end"
        android:textSize="14sp"/>
</LinearLayout>

答案 1 :(得分:0)

LinearLayout并未使用layout_gravity来确定其布局方向。您可以在水平layout_gravity中使用LinearLayout来控制它们垂直放置的位置:顶部,中心或底部。

您可以将LinearLayout更改为垂直,然后您的左/右重力会起作用,但第二个TextView将比第一个更低。我认为这不是你想要的。

在我看来,你对LinearLayout提供的布局逻辑(一个接一个地放置它的孩子)不感兴趣。您只需要一个左对齐,一个右对齐。如果您将TextView放在FrameLayout中,则可以使用重力作为效果。

答案 2 :(得分:0)

尝试这种方式: 编辑Eenvincible的答案......

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="1"
    >
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".5"
        android:text="LEFT"
        android:textSize="14sp"
        android:layout_gravity="left"
        />
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".5"
        android:text="RIGHT"
        android:textSize="14sp"
        android:layout_gravity="right"
        />
</LinearLayout>