Ich habe diese Funktion, die auf Android 4.4.1 funktioniert, aber bricht 5.0+.ImageSpan funktioniert nicht auf 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;
}
Und ich benutze es wie folgt aus:
class MyButton extends Button {
// ... snip ...
setText(
prependImage(
getDrawable(imageResource, color),
getContext().getString(stringResource)),
BufferType.SPANNABLE);
Hier ist die getDrawable()
Methode oben verwiesen:
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;
}
Wenn ich debuggen, alles scheint erfolgreich zu sein, aber kein Bild gezeichnet wird . Irgendwelche Ideen, was ich falsch machen könnte?
ich eine Klasse erstellt, dass 'erweitert android.widget.Button', versucht, Ihre' prependImage (Drawable, String) 'Methode auf dem Emulator mit KitKat und das Bild war * nicht * gezeichnet. –
Nun, es sollte einen Weg geben, um beides zu erreichen. Ich bin vollkommen glücklich, das wegzuwerfen und etwas anderes zu machen. Haben Sie sichergestellt, dass Sie die Grenzen des Zeichensatzes auf etwas anderes als 0,0,0,0 setzen? –
@i_am_jorf Sie könnten 'TextView' anstelle von' Button' verwenden. Es scheint mit 'TextView' in allen Android-Versionen gut zu funktionieren. –