【问题标题】:TextView text alignment to centerTextView 文本居中对齐
【发布时间】:2019-05-17 07:55:22
【问题描述】:

我想将TextView 中的文本居中对齐。我使用了android:gravity="center",但它在单词之间留下了额外的间距。

<LinearLayout
        android:id="@+id/textContainer"
        android:orientation="vertical"
        android:layout_weight="4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="16dp"
            android:textSize="24sp"
            android:textStyle="bold"
            android:textColor="@color/colorTextDarkGrey"
            android:gravity="center"
            android:text="INTRO TITLE"/>

        <TextView
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"
            android:textStyle="normal"
            android:textColor="@color/colorTextLightGrey"
            android:gravity="center"
            android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
            labore et dolore magna aliqua."/>

    </LinearLayout>

预期结果:

【问题讨论】:

  • 你能分享一下你的预期输出吗
  • 你试过android:textAlignment="center"吗?
  • "ut labore" 这些是在它们之间留出空间的词吗?
  • 是的,文本将是随机的,它应该围绕中心对齐,就像在 MS Word 中一样是对齐到中心。这个LinearLayout只是整个布局的一部分,上面会有东西(见权重)
  • 那是因为间距问题。您可以删除这两个单词之间的所有空格并给一个空格,这样就可以了。

标签: android android-layout textview


【解决方案1】:

您看到单词之间的间距的原因是您在文本中使用了额外的行,它在incididunt utlabore et 之间引入了空格。

只需替换这个(两行):

android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
            labore et dolore magna aliqua."

这样(一行):

android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."

希望对你有帮助!

【讨论】:

    【解决方案2】:

    如果必须修复 TextView 的文本,则只需消除任何新的换行符,否则如果您想以编程方式执行此操作,您只需确保不会传递带有换行符的字符串:

    TextView text = findViewById(R.id.text);
    String sampleString = "Line 1\nLine 2";
    text.setText(sampleString.replace("\n", " "));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      • 2013-11-18
      • 2021-05-01
      相关资源
      最近更新 更多