两个并排TextView的重力

时间:2016-01-27 13:40:59

标签: android xml

我正在尝试并排放置两个TextView,我希望一个触摸屏幕的右侧,另一个触摸左侧。我不想使用数字来定义宽度,因为不同大小的屏幕会表现不同。所以我正在尝试使用layout_gravity,由于某种原因这不起作用。

<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:textSize="16dp"
    android:layout_gravity="left"
    android:text="rrr"
    android:textColor="@color/secondTextColor"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:textSize="16dp"
    android:text="sss"
    android:textColor="@color/secondTextColor" />

</LinearLayout>

谁能告诉我为什么?谢谢!

3 个答案:

答案 0 :(得分:3)

您可以尝试 android:layout_weight &amp; android:gravity

阅读 What does android:layout_weight mean &amp;的 Layout Weight

 <LinearLayout 
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="horizontal"
   android:weightSum="1" >

 <TextView

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:gravity="left"
    android:text="Intellij" />

 <TextView

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:gravity="right" // You can add end instead of right
    android:text="Amiya" />

 </LinearLayout>

答案 1 :(得分:3)

您可以为每个LinearLayout创建一个TextView,如下所示:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="start">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:text="rrr"
        android:textColor="#f2f2"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="end">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16dp"
            android:text="sss"
            android:textColor="#f3f3" />
    </LinearLayout>
</LinearLayout>

重要的是,在你的第一个LinearLayout android:gravity="start"和第二个android:gravity="end"中放置end,那么它会起作用:)

使用right代替Gravity#LEFT来确保从右到左区域设置的正确行为。

  

为什么“结束”比“正确”更好?

在文本从Gravity#RIGHT流向right的区域设置中呈现布局时,使用leftGravity#START会导致问题。 请改用Gravity#ENDXML。同样,在layout_gravity重力和start属性中,使用left而不是paddingLeft。 对于layout_marginLeftpaddingStart等XML属性,请使用layout_marginStartminSdkVersion。 注意:如果您的left/right小于17,则应添加较旧的start/right属性以及新的RTL属性。在较旧的平台上,如果不支持start/rightleft/right属性未知且因此被忽略,则需要较旧的Gravity#LEFT属性。有一个单独的lint检查可以捕获这种类型的错误。

(注意:对于Gravity#STARTgravity="start",即使定位较旧的平台,也可以使用这些常量,因为起始位掩码是左位掩码的超集。因此,您可以使用{{1而不是gravity="left|start"。)

答案 2 :(得分:0)

您可以使用http://www.example.com/test/product.html#color=blue上的 // Overwrite defaults by url var separatorIndex = window.location.href.indexOf('#'); if (separatorIndex != -1) { var paramsStr = window.location.href.substr(separatorIndex+1); var urlValues = paramsStr.toQueryParams(); if (!this.values) { this.values = {}; } for (var i in urlValues) { this.values[i] = urlValues[i]; } } // Overwrite defaults by inputs values if needed if (config.inputsInitialized) { this.values = {}; this.settings.each(function(element) { if (element.value) { var attributeId = element.id.replace(/[a-z]*/, ''); this.values[attributeId] = element.value; } }.bind(this)); } android:layout_weight="1"上的TextView's