Android spannbare Zeilenhöhe

8

Ich habe versucht, dies in den letzten Tagen herauszufinden, und hatte keinen Erfolg ...

Ich lerne gerade Android und erstelle gerade einen Taschenrechner mit Geschichte als Lernprojekt. Ich habe ein TextView, das für das Anzeigen des gesamten Verlaufs verantwortlich ist ... Ich benutze eine digitale Schriftart, die wie eine Taschenrechnerschrift aussieht, aber dies sieht nur gut für Ziffern, Dezimalzahlen und Kommas aus. Ich möchte, dass alle Operatoren hervorgehoben und in einer anderen Schriftart angezeigt werden (Arial Narrow im Moment). Ich war in der Lage, dies mit einer spannbaren Zeichenfolge, bei der ich eine Schriftartfarbe und eine Schriftart unter Verwendung einer CustomTypeFaceSpan-Klasse angeben, um meine benutzerdefinierten Schriftarten anzuwenden, schön zu arbeiten.

Das Problem ... Wenn ich die Schriftarten mische, scheint es ein Problem mit der Zeilenhöhe zu geben, also habe ich dieser Beitrag , der demonstriert, wie eine andere benutzerdefinierte Klasse verwendet wird, um eine Zeilenhöhe auf jede hinzugefügte Zeile von spannbarem Text anzuwenden:

%Vor%

Das scheint nicht zu funktionieren, und ich kann nicht herausfinden warum. Wenn ich die verschiedenen Schriftarten nicht anwende, wird es wie erwartet angezeigt, ohne Leerzeichen oberhalb der ersten Zeile und etwa 5 px Abstand zwischen den Zeilen. Wenn ich die alternativen Schriftarten anwende, gibt es einen Abstand von ungefähr 10 bis 15px über der ersten Textzeile und der Zeilenabstand ist ungefähr gleich 10 bis 15px.

Es gibt keinen Unterschied in der Schriftgröße, nur die Schrift. Was vermisse ich. Ich habe den CustomLineHeightSpan implementiert, der LineHeightSpan implementiert und die Methode chooseHeight überschreibt. Ich nenne es so:

WordtoSpan.setSpan (neu CustomLineHeightSpan (10), operatorPositions.get (ii), operatorPositions.get (ii) + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Es scheint mir egal zu sein, was ich in CustomLineHeightSpan anrufe. Nichts ändert sich ...

Jeder hat eine Idee, was ich vermisse ... Ich bin mir sicher, es ist eine "Ich kann nicht glauben, dass ich diese Antwort verpasst habe", aber ich kann es im Moment nicht herausfinden.

Danke für die Hilfe Jungs: -)

    
titanic_fanatic 16.10.2012, 15:10
quelle

1 Antwort

17

Ich habe endlich ein ausführlicheres Beispiel für die Verwendung von LineHeightSpan gefunden ... Eigentlich LineHeightSpan.WithDensity um genauer zu sein ... Der folgende Auszug hilft mir mein Problem zu lösen:

%Vor%

Dies wurde aus diesem Beispiel übernommen.

Was es tut, ist wie folgt:

  

Erzwingt, dass die Textzeile die angegebene Höhe hat und schrumpft / streckt   der Aufstieg wenn möglich, oder der Abstieg, wenn der Aufstieg weiter schrumpft   macht den Text unlesbar.

Ich hoffe, das hilft der nächsten Person: -)

    
titanic_fanatic 17.10.2012, 01:08
quelle