带有
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>
我想删除多行文本左右两端的多余空格。如果我手动将
layout_width
设置为某个特定值(例如 270dp
),则可以实现该效果,但随后它就变得任意了。我更喜欢将其保留为 wrap_content
。
编辑: 这样做的目的是我想使用适合文本的自定义背景、圆形背景。我已经编辑了示例 xml 和图像。
在 .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);