2

Ich habe eine TextView gefüllt mit Text, der einige ImageSpan Objekte enthalten sollte. Die Bilder können größer als die normale Zeilenhöhe sein, die das folgende Problem verursacht:TextView mit ImageSpan vermasselt Zeilenhöhe

  • Wenn das Bild das letzte Objekt einer Linie ist, die folgenden Zeilen Höhe korrekt ist
  • , wenn das letzte Objekt ist nicht ein Bild, wobei die Höhe folgenden Zeilen der Bild enthaltenden Zeilenhöhe eingestellt ist

hier die korrekte Lage: enter image description here


Das ist die falsche Situation: enter image description here

Was ist interessanter ist, dass, wenn es ein neuer Online-Zeichen im Text ist, die Zeilenhöhe von diesem Punkt wieder gut ist.

Die TextView ist nur ein ziemlich einfach ein:

<TextView 
    android:id="@+id/text_02" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="18dp" 
    android:text="Text 02" /> 

(Die TextView in einem LinearLayout befindet, die in einem ScrollView ist.)

Dies ist, wie ich das übergreifende Text zu erstellen:

TextView textView02 = (TextView) findViewById(R.id.text_02); 

SpannableString string = new SpannableString(LOREM_IPSUM); 
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 102, 103, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 105, 106, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 108, 109, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

textView02.setText(string); 

Hat jemand eine Idee über ein Sol dafür? Ich würde lieber nicht die TextView 's Linie zeichnen Methoden ...

+0

haben Sie das jemals herausgefunden – j2emanue

+0

Nicht reall. Allerdings habe ich es mit mehreren Emulator Images getestet und es scheint mir, dass nur die API 23 (6.0) dies erzeugt. Auch, wenn ich es auf einem API 23-Telefon (6.0.2 glaube ich) laufen ließ, würde es nie dieses ähnliche Verhalten zeigen. Ich denke, die Entwickler haben etwas in der ursprünglichen API 23 durcheinander gebracht, aber später behoben. –

Antwort

0

Versuchen Sie, eine Höhe zu den Zeichen festlegen, die Sie mit der ImageSpan zeigen möchten. Zum Beispiel so:

Drawable vegetary = mContext.getResources().getDrawable(R.drawable.ic_best_veget); 
    vegetary.setBounds(0, 0, vegetary.getIntrinsicWidth(), <yourHeight>); 
    ssb.setSpan(new ImageSpan(vegetary, ImageSpan.ALIGN_BASELINE), ssb.length()-1, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);