Legen Sie die Breite von TextView in Zeichen fest

86

Ich suche wirklich nach einer Antwort darauf .

Möchten Sie die Breite einer Textansicht basierend auf einer Zahl oder Zeichen festlegen? Wenn ich also möchte, dass es immer 3 Zeichen breit ist, kann ich das einstellen und es wird basierend auf der textSize-Einstellung angepasst. Ohne dies muss ich eine Breite auf 50dip oder so einstellen, was je nach Schriftgröße richtig sein kann oder nicht.

Fraggle
quelle
Möglicherweise gibt es eine Möglichkeit, dies zu tun, indem Sie Ihre Dimension in angeben sp.
CommonsWare
@CommonsWare, ja, wenn Sie mir sagen können, wie viele SP einem Zeichen entsprechen, das möglicherweise funktioniert (aber siehe meine Antwort unten mit minEms, da ich denke, dass ich das möchte). Wenn also die Textgröße 30sp beträgt und ich 3 Zeichen breit haben möchte, setze ich die Breite auf 90sp? Ich denke, ich könnte es versuchen.
Fraggle
2
Ja, minEmsist wahrscheinlich eine bessere Antwort.
CommonsWare

Antworten:

172

Beantwortung meiner eigenen Frage ...

Und der Gewinner ist: Setze das minEmsAttribut ( android:minEms) !!!

" Ems " bezieht sich also auf die Größe des breitesten Zeichens, normalerweise ein "M", verstanden? Wenn Sie also minEms in einem EditText oder einer Textansicht auf einen ganzzahligen Wert von beispielsweise 3 setzen, sollte sichergestellt sein, dass er mindestens 3 Zeichen breit ist. Sie können auch die maxEms einstellen.

Kyles Antwort auf diesen Thread hat mich veranlasst, die Antwort zu finden, obwohl sie falsch ist. Also danke Kyle.

Fraggle
quelle
3
Natürlich teste ich immer noch, ob das tatsächlich funktioniert, aber bisher sieht es so aus.
Fraggle
7
Beachten Sie auch , dass layout_widthBedürfnisse sein wrap_contentfür minEms und maxEms zu arbeiten , wie beabsichtigt, da diese Antwort Punkte aus.
Jonik
0

Bei den meisten Schriftarten sind nicht alle Zeichenbreiten identisch. Kurier ist vielleicht die am häufigsten verwendete Ausnahme, aber betrachten Sie im Allgemeinen zum Beispiel den Unterschied zwischen einem i und einem A. Dies macht das, was Sie verlangen, zu einem Problem.

mah
quelle
Richtig, also hatte ich gehofft, dass dieses Problem gelöst war. Stellen Sie also die Breite in Zeichen ein und ermitteln Sie dann zur Anzeigezeit die Schriftmerkmale für dieses Feld und bestimmen Sie, wie groß es darauf basierend sein soll. Fragen Sie also wirklich, ob dieses Problem auf eine einfache Art und Weise gelöst wurde. Klingt nach nicht.
Fraggle
0

Versuchen Sie es mit: android:maxLength="3"

Dadurch wird Ihr Text auf eine bestimmte Anzahl von Zeichen beschränkt.

KyleM
quelle