Ich möchte meine ImageSpan
an die Grundlinie des Textes ausrichten, aber ich muss auch etwas Abstand zwischen den Zeilen hinzufügen.
Das Problem ist, dass, wenn ich Zeilenabstand hinzufügen, die ImageSpan
nicht an der Grundlinie des Textes, sondern an die baseline+lineSpacing
ausgerichtet ist, so dass es niedriger erscheint, als es sollte.ImageSpan.ALIGN_BASELINE wenn TextView lineSpacing hat
Gibt es einen Workaround?
Edit: Weitere Erläuterungen:
, wie es aussieht ohne
lineSpacing
(der Pfeil ist dieImageSpan
). Es ist korrekt auf die Grundlinie ausgerichtet.
Wie es aussieht, wenn ich hinzufügen
android:lineSpacingMulitiplier="1.2"
Edit 2 Der Code:
XML:
<com.kushtrim.example.views.CustomTypefaceTextView
android:id="@+id/descId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="3"
android:gravity="center_vertical"
android:layout_marginLeft="@dimen/_45"
android:layout_marginTop="@dimen/_6"
android:layout_marginBottom="@dimen/_20"
app:font_type="merriweather_regular"
android:textSize="@dimen/f40"
android:lineSpacingMultiplier="1.2"
android:textColor="@color/black"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."
android:ellipsize="end" />
Andere relevante Methoden:
private Spannable getContentText(ContactRaport contactRaport) {
DateTime dateTime = new DateTime(contactRaport.contactDate);
String datePart = dateTime.getDayOfMonth() + " " + dateTime.monthOfYear().getAsShortText(new Locale("nl")) + "; ";
String completeText = datePart + contactRaport.note;
Typeface font1 = Typeface.createFromAsset(context.getAssets(), "MyFont1.ttf");
Typeface font2 = Typeface.createFromAsset(context.getAssets(), "MyFont2.ttf");
SpannableStringBuilder spannable = new SpannableStringBuilder("XX");
ImageSpan arrow = getArrowImageSpan(contactRaport);
spannable.setSpan(arrow, 0, 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
spannable.append(completeText);
spannable.setSpan(new CustomTypefaceSpan("", font1), 2, datePart.length()+1, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannable.setSpan(new CustomTypefaceSpan("", font2), datePart.length(), completeText.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spannable.setSpan(new ForegroundColorSpan(getContentDateColor(contactRaport)),2, datePart.length()+1, 0);
return spannable;
}
.
private ImageSpan getArrowImageSpan(ContactRaport contactRaport) {
Drawable d = null;
switch (contactRaport.type) {
... logic to load the correct drawable
}
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
}
mir zeigen, was u genau want..provide Code ya Bildschirm kurz – Destro
@Destro Weitere excludied, was ich meine.Ich poste nicht den Code, da ich nichts besonderes mache, nur Hinzufügen von android: lineSpacingMulitiplier –
wie Bild hinzufügen, bedeutet unter dem linearen Layout ya relativ Layout .. Bild ist in der Mitte in der vertikalen des Layouts hinzufügen – Destro