Der Anruf TextView.setTextSize()
funktioniert nicht ordnungsgemäß. Gleich nach dem Aufruf von, setTextSize
wenn wir eine erhalten getTextSize
, wird ein viel höherer Wert zurückgegeben, als wir ihn zuvor festgelegt haben.
Folgendes machen wir:
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
Hat das schon mal jemand gesehen?
Antworten:
Der Unterschied besteht darin, dass bei der
setTextSize(int size)
Methode der Einheitentyp standardmäßig "sp" oder "skalierte Pixel" ist. Dieser Wert ist für jede Bildschirmdichte (ldpi, mdpi, hdpi) eine andere Pixeldimension.getTextSize()
Gibt andererseits die tatsächlichen Pixelabmessungen des Textes zurück.Sie können mit
setTextSize(int unit, float size)
einem Gerätetyp angeben. Die konstanten Werte hierfür finden Sie in der TypedValue-Klasse. Einige davon sind jedoch:quelle
Dieses Problem trat auf, weil die
getTextSize()
Methode die Größe in Pixel zurückgibt, die von der Bildschirmdichte abhängt! Verwenden Sie Folgendes, um die tatsächliche Textgröße zu erhalten:ich hoffe es löst es :)
quelle
setTextSize(int unit, float size)
。Wenn Sie die Schriftgröße ändern (etwas verursacht einen Fehler anzeigen), können Sie Folgendes tun:
quelle
DIP
?Wenn wir versuchen, ein textuelles Problem mit getTextSize () zu setzen, wird der Wert in px anstelle von sp / dp / dip zurückgegeben, und wir kennen 1sp / dp = 1,5px (Bildschirmgröße = 240).
funktioniert perfekt für mich oder wir können das Verhältnis von Displaymatrix zu px: sp / dp verwenden und dann diesen Wert durch 1,5f ersetzen
quelle
Nach langer Zeit schlug dies zu und löste sich schließlich so
Erstellen Sie einen Dimen-Ordner wie diesen res / values / dimensions.xml
quelle
Kurz gesagt, wenn Sie Ihre Textgröße verkleinern möchten
Da getTextSize () UNIT_PX zurückgibt, sollten wir UNIT_PX verwenden
quelle
Kotlin-Lösung
Verwenden Sie zum Festlegen einer Ressource einfach Folgendes:
Um dasselbe mit einem Ressourcenwert zu tun, fügen Sie diese Erweiterungseigenschaft hinzu, um Ihre Textgröße viel einfacher festzulegen
quelle
Das Hinzufügen von etwas mehr Geschmack für diese Antwort, da dies auch zu Verwirrung führte. Sie sollten in der Lage sein, diesen Test in jeden
@RunWith(AndroidJUnit4.class)
Test Ihres Projekts einzufügen (Sie müssen die Dimensionen auch zu Ihrer dimension.xml hinzufügen).Hinweis: Alle diese Tests bestehen
Der große Vorteil, den ich gefunden habe, ist, dass
TextView.setTextSize(float)
die Schriftartenskalierung angewendet wird. Wenn Sie also ein Maß übergeben, das bereits als SP anstelle von DP gekennzeichnet ist, erhält es die Schriftartenskalierung zweimal .quelle