Ho questa funzione che funziona bene su Android 4.4.1, ma si interrompe su 5.0+.ImageSpan non funziona su 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;
}
e lo uso come questo:
class MyButton extends Button {
// ... snip ...
setText(
prependImage(
getDrawable(imageResource, color),
getContext().getString(stringResource)),
BufferType.SPANNABLE);
Ecco il metodo getDrawable()
di cui sopra:
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;
}
Quando metto a punto, tutto sembra avere successo, ma nessuna immagine viene disegnata . Qualche idea su cosa potrei fare male?
ho creato una classe che estende 'android.widget.Button', ha cercato di utilizzare il metodo' prependImage (Drawable, String) 'sull'emulatore con KitKat e l'immagine era * non * disegnato. –
Beh, dovrebbe esserci un modo per farlo disegnare su entrambi. Sono perfettamente felice di buttarlo via e fare qualcos'altro. Ti sei assicurato di impostare i limiti del drawable per essere qualcosa di diverso da 0,0,0,0? –
@i_am_jorf Potresti usare 'TextView' invece di' Button'. Sembra funzionare bene con 'TextView' in tutte le versioni di Android. –