У меня есть эта функция, которая отлично работает на Android 4.4.1, но разрывается на 5.0+.ImageSpan не работает на Android 5
public static SpannableStringBuilder prependImage(Drawable drawable, String text) {
SpannableStringBuilder builder = new SpannableStringBuilder(" " + text);
builder.setSpan(new ImageSpan(drawable), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return builder;
}
И я использую это так:
class MyButton extends Button {
// ... snip ...
setText(
prependImage(
getDrawable(imageResource, color),
getContext().getString(stringResource)),
BufferType.SPANNABLE);
Вот getDrawable()
метод ссылки выше:
private Drawable getDrawable(int resource, int color) {
final Resources resources = getContext().getResources();
Drawable drawable = resources.getDrawable(resource);
if (drawable != null) {
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}
return drawable;
}
Когда я отладки, кажется, что все получится, но изображение не обращается , Любые идеи, что я могу делать неправильно?
Я создал класс, который 'расширяет android.widget.Button', попытался с помощью' prependImage (рисуем, String) 'метод на эмуляторе работает KitKat и изображение было * не * нарисованный. –
Ну, должен быть способ заставить его нарисовать оба. Я совершенно счастлив выбросить это и сделать что-то еще. Удостоверились ли вы, что границы допустимого значения будут чем-то иным, чем 0,0,0,0? –
@i_am_jorf Вы можете использовать 'TextView' вместо' Button'. Кажется, он отлично работает с «TextView» во всех версиях Android. –