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

Android 紧密包裹TextView中多行文本背景中的间隙,android,xml,android-layout,textview,android-xml,Android,Xml,Android Layout,Textview,Android Xml,我编写了XML代码以显示绿色背景的文本视图: 但是,我希望第二行文本左右的空间是完全透明的,没有任何绿色背景——通常更靠近文本 这是一张图片,描绘了左侧应该是透明的部分(尽管我希望两侧都是透明的) 现在我意识到,我可以通过使用两个置于彼此上方的文本视图来实现这一点,并将Java代码中的文本在这两个视图之间分割。因为它们是分开的,所以它们将各自包装,因此底部视图上的文本将被紧紧包装,而不会受到顶部视图包装的影响/扩展 但是,理想情况下,我希望使用XML或更优雅的解决方案来实现这一点。这可以用X

我编写了XML代码以显示绿色背景的文本视图:

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

这是一张图片,描绘了左侧应该是透明的部分(尽管我希望两侧都是透明的)

现在我意识到,我可以通过使用两个置于彼此上方的文本视图来实现这一点,并将Java代码中的文本在这两个视图之间分割。因为它们是分开的,所以它们将各自包装,因此底部视图上的文本将被紧紧包装,而不会受到顶部视图包装的影响/扩展


但是,理想情况下,我希望使用XML或更优雅的解决方案来实现这一点。这可以用XML来完成吗?还是我需要坚持我建议的使用多个文本视图的解决方案?

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

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"
    />

其效果是:

你知道以前图文混在一起吗?此代码将帮助您:

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"
    />

其效果是:

我认为我们不能通过XML中的系统api设置背景。如果您只想使用XML进行设置,也许您必须绘制一个扩展TextView的视图。但是SpannableStringBuilder非常强大。我们总是在barrage上使用它。谢谢,这解决了我的问题。给这个添加填充物很困难吗?给TextView添加填充物并不困难。我的意思是在跨越背景的情况下。仅在xml或java中定期添加填充不会影响SpannableStringBuilder的后台。我认为我们不能通过xml中的系统api设置后台。如果您只想使用xml来实现这一点,可能您必须绘制一个扩展TextView的视图。但是SpannableStringBuilder非常强大。我们总是使用它来处理barrage。谢谢,这解决了我的问题。给这个添加填充物很困难吗?给TextView添加填充物并不困难。我的意思是在跨越背景的情况下。仅在xml或java中定期添加填充不会影响SpannableStringBuilder的后台。