在TextView中紧紧包裹多行文本背景中的间隙

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在TextView中紧紧包裹多行文本背景中的间隙相关的知识,希望对你有一定的参考价值。

我编写了XML代码来显示带有绿色背景的TextView:

enter image description here

但是,我希望第二行文本左侧和右侧的空间完全透明,没有任何绿色背景 - 通常更接近文本。

这是一张描绘左侧应该透明的部分的图像(尽管我打算将两边都透明)。

enter image description here

现在我知道我可以通过使用两个放在彼此上面的TextView并在两个视图之间拆分Java代码中的文本来实现这一点。由于它们是分开的,因此它们每个都会换行,因此底部视图上的文本将被紧紧包裹,而不会被顶部视图的包裹影响/扩展。

但是,理想情况下,我想在XML中使用更优雅的解决方案。这可以用XML完成,还是我需要坚持使用我提出的使用多个TextViews的解决方案?

答案

你知道之前的图形文字混合吗?此代码将帮助您:

String str="this bit of text spans more than one line.Words words words";
    int bstart=0;
    int bend=str.length();

    SpannableStringBuilder style=new SpannableStringBuilder(str);
    style.setSpan(new BackgroundColorSpan(ContextCompat.getColor(this,R.color.colorGreenTra)),bstart,bend, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    TextView tvColor=(TextView) findViewById(R.id.tv_color);
    tvColor.setText(style);

并在XML中:

<TextView
    android:id="@+id/tv_color"
    android:layout_width="280dp"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:text="this bit of text spans more than one line.Words words words"
    />

效果:enter image description here

以上是关于在TextView中紧紧包裹多行文本背景中的间隙的主要内容,如果未能解决你的问题,请参考以下文章

具有多行文本的 Scrollview 中的 Listview

如何将一列小部件紧紧包裹在卡片中?

Android 并在 TableRow 的 TextView 中显示多行文本

使用android中的颜色选择器更改textview的文本颜色和背景颜色

动画期间键盘和文本视图之间的间隙

UITextView 文本在文本中间的每个单词之间给出了小的间隙