繁体   English   中英

为什么将layout_gravity设置为left / right在水平LinearLayout中不起作用?

[英]Why does layout_gravity set to left/right have no effect in horizontal LinearLayout?

我试图有两个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>  

我究竟做错了什么?

尝试这个:

<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>

LinearLayout不会将layout_gravity用于其布局的方向。 您可以在水平LinearLayout使用layout_gravity来控制垂直放置的方式:顶部,中心或底部。

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

在我看来,您对LinearLayout提供的布局逻辑不感兴趣(这是将其子项一个接一个地放置)。 您只希望一个左对齐,一个右对齐。 如果将TextView放在FrameLayout ,则可以使用重力来实现这种效果。

尝试这种方式:编辑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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM