Allineare ImageSpan alla parte superiore del TextView

Attualmente desidero aggiungere un'image tra i testi e allinearlo alla parte superiore del TextView.

Qualcosa come questo:

  • Imageview Imposta per mostrare l'image in sdcard?
  • Notifiche a nido d'ape - Come impostare bigIcon alla giusta dimensione?
  • Android Java runOnUiThread ()
  • quantificatore sw600dp non funziona sulla scheda Galaxy
  • Posizionamento di MediaController su VideoView
  • Errore di proguardia quando esport un'applicazione firmata usando il pacchetto di compatibilità con il honeycomb di android.support.v4.app
  • immettere qui la descrizione dell'immagine

    Gli unici allineamenti verticali che posso trovare sono la linea di base (che sembra metterla proprio al centro del text) e allineare il fondo.

    Cosa succede se uso ALIGN_BASELINE è:

    immettere qui la descrizione dell'immagine

    C'è un modo per allinearlo al vertice invece?

    Il mio codice attuale:

    txtView.setText(this.addImageAsterisk( "The string to have asterisk at the end*"), BufferType.SPANNABLE); 

    poi

     private CharSequence addImageAsterisk(String string) { Drawable d = context.getResources().getDrawable(R.drawable.img_asterisk); ImageSpan imageSpan = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); final SpannableString spannableString = new SpannableString(string); spannableString.setSpan(imageSpan, string.length()-1, string.length(), 0); return spannableString; } 

    la rimozione di ImageSpan.ALIGN_BASELINE lo imposta per allinearsi al fondo che non è anche il mio risultato previsto.

    — Grazie dell'utente Lalit Poptani, ho provato ad applicare la tua risposta —- dopo aver applicato questo, quello che succede è che l'intera visualizzazione di text sembra avere superiore in margine.

    prima di applicare la fascia:

     This is the text* 

    dopo aver applicato il SuperscriptSpanAdjuster

     (some extra space) This is the text* 

    Il mio codice:

     String string = "This is the text*"; Drawable d = this.context.getResources().getDrawable(R.drawable.img_asterisk); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan imageSpan = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); SuperscriptSpanAdjuster s = new SuperscriptSpanAdjuster(1.5); final SpannableString spannableString = new SpannableString(string); spannableString.setSpan(s, string.length() - 1, string.length(), 0); spannableString.setSpan(imageSpan, string.length(), string.length() + 1, 0); textView.setText(spannableString); 

  • Android: Emulatore spesso scollegato (offline)!
  • Android Picasso ImageView - Memoria eccezionale di MemoryLeak
  • Deseleziona tutte le caselle di controllo in un ListView personalizzato
  • La nuova toolchain Jack si blocca quando si utilizza plugin android-apt
  • Come impostare il text della visualizzazione di text in un altro thread
  • Progetto Eclipse Android, come fare riferimento alla libreria all'interno dell'area di lavoro?
  • One Solution collect form web for “Allineare ImageSpan alla parte superiore del TextView”

    Quello che puoi fare è utilizzare un MetricAffectingSpan personalizzato per mantenere il suo rapporto come,

     public class SuperscriptSpanAdjuster extends MetricAffectingSpan { double ratio = 0.5; public SuperscriptSpanAdjuster(double ratio) { this.ratio = ratio; } @Override public void updateDrawState(TextPaint paint) { paint.baselineShift += (int) (paint.ascent() * ratio); } @Override public void updateMeasureState(TextPaint paint) { paint.baselineShift += (int) (paint.ascent() * ratio); } } 

    E si può usare SpannableString per applicare asterisco alla string come,

     SpannableString mString = new SpannableString("This is what I wanted*"); mString.setSpan(new SuperscriptSpanAdjuster(0.5), mString.length() - 1, mString.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView.append("\n"); mTextView.append(mString); 

    Questo è aggiungere asterisco al text come richiesto. E la tua output sarà come,

    immettere qui la descrizione dell'immagine

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.