【问题标题】:How to set gravity for each line in android textview?如何在android textview中为每一行设置重力?
【发布时间】:2016-11-07 06:18:24
【问题描述】:

我有一个包含英语和波斯语的字符串。我希望如果一行以波斯字符开头,则此行在文本视图中从右到左显示,如果一行以英文字符开头,则此行从左到右显示。

注意:我想为文本视图中的每一行设置重力/方向。

如何在android textview中实现。

这是我的 textview xml 代码:

    <TextView
        android:id="@+id/textViewContent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:autoLink="web"
        android:layoutDirection="rtl"
        android:gravity="start"
        android:layout_gravity="start"
        android:text="My Text"
        android:textColor="#000"
        android:textDirection="rtl" />

【问题讨论】:

  • @AmitVaghela 我更新了关于我的问题的标题和解释。
  • 您能否在自己的TextViews 中拆分您的文本并分别显示英语和波斯语文本部分?恕我直言,这似乎是最简单的解决方案。
  • @Artjom 我在回收视图中使用此文本视图,我认为此解决方案会降低回收视图性能。您对此有何看法?
  • 我总是喜欢一个简单的解决方案,并且只有当它显着影响性能时才对其进行优化。在您的情况下,我认为使用多个 TextView 不会有明显的性能缺陷。

标签: android textview right-to-left left-to-right


【解决方案1】:

您正在寻找的是 ANY_RTL 要添加到您的文本视图的文本方向

    android:textDirection="anyRtl"

你会得到这样的结果:

认为它是 API17+ 解决方案。

【讨论】:

    【解决方案2】:

    可以使用TextView的属性来对齐文本内容。

    在布局中左对齐文本

    android:gravity="start"
    

    在布局中将文本右对齐。

    android:gravity="end"
    

    【讨论】:

    • 我添加了我的 textview xml 代码。我想为每条线设置重力。
    【解决方案3】:

    使用重力属性。

    不是左/右使用开始,而是为了支持 rtl 而添加的。

    https://developer.android.com/reference/android/widget/TextView.html#attr_android:gravity

    【讨论】:

    • 我添加了我的 textview xml 代码。我想为每条线设置重力。
    • 我可能是错的,但我认为你不能在每行的基础上做到这一点。您必须为每行添加 N 个 textviews 1。
    【解决方案4】:

    这样使用

               if (textview.contentEquals("persian")) {
                    textview.setGravity(Gravity.START);
                } else if (textview.contentEquals("english")) {
                    textview.setGravity(Gravity.END);
                }
    

    【讨论】:

    • 我想为每一行设置重力,而不是为 textview 设置重力。
    • 然后为你的布局或视图设置重力,它与 textview 的过程相同。
    • 假设你的线性布局有 3 行和 3 个文本视图,那么只需设置 layout.setGravity(Gravity.start);
    • 我有一个文本视图和一个包含英语和波斯语的动态大字符串。如果我有一个静态字符串,我可以使用你的建议。 @Sagar Chavada
    • 动态字符串还是静态字符串是什么意思
    【解决方案5】:

    我猜你可以尝试使用 spannable 和 Alignment 属性:

    Alignment.ALIGN_OPPOSITE(右)和 Alignment.ALIGN_NORMAL(左)。

    检查这个答案:Multiple alignment in TextView?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多