Android TextView 多行有额外的空间

问题描述 投票:0回答:1

带有

android:layout_width="wrap_content"
的多行 TextView 会自动占用最大空间,就像它们变成
match_parent
一样。有什么方法可以保持真实的
wrap_content
行为吗?

示例 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_bg"
        android:backgroundTint="@color/colorAccent"
        android:text="Example text"
        android:textAlignment="center"
        android:textColor="#fff"
        android:textSize="28sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@drawable/rounded_bg"
        android:backgroundTint="@color/colorAccent"
        android:text="Example text ================"
        android:textAlignment="center"
        android:textColor="#fff"
        android:textSize="28sp" />

    <TextView
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@drawable/rounded_bg"
        android:backgroundTint="@color/colorAccent"
        android:text="Example text ================"
        android:textAlignment="center"
        android:textColor="#fff"
        android:textSize="28sp" />

</LinearLayout>

enter image description here

  1. 单线
  2. 多行
  3. 我想要它的外观

我想删除多行文本左右两端的多余空格。如果我手动将

layout_width
设置为某个特定值(例如
270dp
),则可以实现该效果,但随后它就变得任意了。我更喜欢将其保留为
wrap_content

编辑: 这样做的目的是我想使用适合文本的自定义背景、圆形背景。我已经编辑了示例 xml 和图像。

android textview
1个回答
0
投票

在 .java 文件中以编程方式尝试,无需更改 xml 文件

SpannableString s = new SpannableString("your content");             
s.setSpan(new BackgroundColorSpan(getResources().getColor(R.color.colorAccent)), 
0, s.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);                     
text.setText(s);
© www.soinside.com 2019 - 2024. All rights reserved.