#android #kotlin
#Android #kotlin
Вопрос:
Я хотел бы поместить небольшое анимированное изображение в конец абзаца пользовательского TextView, но оно не будет отображать изображение, когда я использовал следующий код:
cmptDiag.setSpan(
ImageSpan(context, R.drawable.diagpause_anim_gif, DynamicDrawableSpan.ALIGN_BASELINE),
cmptDiag.length-2,
cmptDiag.length-1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
Я подозреваю, что был бы лучший вариант для «контекста», но не смог найти что-то подходящее для этого. getContext() не работает, и я не могу поместить «this» или «this@theCustomTextView».
Комментарии:
1. вы должны установить границы в своем drawable
2. пожалуйста, еще немного подсказки? Я не смог найти его в выпадающем меню.
3. Кажется, вы используете SPAN_EXCLUSIVE_EXCLUSIVE, это исключит как начальные, так и конечные символы. И я думаю, что если длина равна 0, span автоматически удаляется из текста. Вы можете попробовать изменить его на SPAN_INCLUSIVE_INCLUSIVE или изменить это значение 2
cmptDiag.length-2, cmptDiag.length-1,
, чтобы убедиться, что длина диапазона не равна 0.
Ответ №1:
проверьте этот пример.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val text = ("Lorem Ipsum is simply dummy text of the printing and"
" typesetting industry. Lorem Ipsum has been the industry's"
" standard dummy text ever since the 1500s, when an unknown"
" printer took a galley of type and scrambled it"
" to make a type specimen book.").toSpannable()
// Get icon from drawable resource
var icon:Bitmap = BitmapFactory.decodeResource(resources,R.drawable.cfsuman)
// Scale bitmap using android kotlin core ktx function
icon = icon.scale(100,100,false)
// Image span from drawable icon
text[49..50] = ImageSpan(this,R.drawable.ic_weekend)
// Another image span from bitmap
text[89..90] = ImageSpan(this,icon)
textView.text = text
}
}
в этом примере изображения будут отображаться в текстах.
и если вы хотите добавить привязку, проверьте это.
Drawable image = ContextCompat.getDrawable(mContext, android.R.drawable.presence_offline);
image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
// Replace blank spaces with image icon
String myText = "myText";
int textLength = myText.length();
SpannableString sb = new SpannableString(myText " " "This is another text");
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, textLength, textLength 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
этот пример «привязки» написан java. но я думаю, вы можете перейти на kotlin
Комментарии:
1. Спасибо за вашу любезную помощь! похоже, в пользовательских представлениях эти коды, включая мои, работают не так, как в activities. Я мог бы управлять ими для работы в activities. Я думаю, мне нужно изучить это немного позже..