Как применить цвет фона для ImageSpan в Android? - PullRequest
3 голосов
/ 04 февраля 2020

Я хочу применить цвет фона для диапазона изображений динамически в Android.

Не могли бы вы предложить какие-либо идеи?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2020

Вы не можете использовать BackgroundColorSpan и ImageSpan одновременно. Идея заключается в создании ImageSpan из LayerDrawable со слоями фона и изображения. Пожалуйста, посмотрите на следующий код:

Kotlin:

val span: Spannable = SpannableString("This is   ic launcher with background")
val myImage: Drawable = resources.getDrawable(R.drawable.ic_launcher_foreground)
val background = ShapeDrawable()
background.paint.color = Color.RED
val layerDrawable = LayerDrawable(arrayOf(background, myImage))
layerDrawable.setBounds(0, 0, 64, 64)
val image = ImageSpan(layerDrawable, ImageSpan.ALIGN_BASELINE)
span.setSpan(image, 8, 9, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)

textView.setText(span)


Java:

Spannable span = new SpannableString("This is   ic launcher with background");
Drawable myImage = context.getResources().getDrawable(R.drawable.ic_launcher_foreground);
ShapeDrawable background = new ShapeDrawable();
background.getPaint().setColor(Color.RED);
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{background, myImage});
layerDrawable.setBounds(0, 0, 64, 64);
ImageSpan image = new ImageSpan(layerDrawable, ImageSpan.ALIGN_BASELINE);
span.setSpan(image, 8, 9, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

textView.setText(span);


Результат будет таким:

enter image description here

0 голосов
/ 04 февраля 2020
  1. Вы можете попробовать использовать BackgroundColorSpan с ImageSpan для той же позиции
  2. Вы можете создать изображение нужного вам цвета
...