android - 两个并排的 TextView 的引力

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

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

最佳答案

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

<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 以确保在从右到左的语言环境中的正确行为。

Why is "end" better than "right"?

使用 Gravity#LEFTGravity#RIGHT 在文本从 right 流向 。 请改用 Gravity#STARTGravity#END。同样,在 XML gravity 和 layout_gravity 属性中,使用 start 而不是 left。 对于 paddingLeftlayout_marginLeft 等 XML 属性,请使用 paddingStartlayout_marginStart。 注意:如果您的 minSdkVersion 小于 17,您应该添加旧的 left/right 属性以及新的 start/right 属性.在不支持 RTLstart/right 属性未知并因此被忽略的较旧平台上,您需要较旧的 left/right 属性.有一个单独的 lint 检查可以捕获该类型的错误。

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

关于android - 两个并排的 TextView 的引力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038964/

相关文章:

java - 为另一个字符串的子字符串创建一个新的字符串是多余的吗?

从 Activity 标签中选择的 Android 应用程序图标名称比从应用程序标签中选择的

java - 我的项目中缺少 R.Java 并且不会重新生成

xml - 如何将 NSArray 或 NSDictionary 保存到 JSON 文件?

java - 合并两个 web.xml 文件以避免重复节点

html - XSLT:组织用于打印的 html 表格

java - arrayAdapter 中的 AlertDialog 不工作

android-view - Android 会重绘不可见 View 吗?

xml - sql中的暂定日期转换

php - 如何删除所有特殊字符,如 "RS"(记录分隔符)