2017-12-30 26 views
1

Keine der zuvor gestellten Fragen und Lösungen funktionierte für mich.TextView Größe unterscheidet sich in realen Gerät und Emulator

für die Methoden SetTextSize(), wenn I Festwert codiert geben, wie unten:

textView.setTextSize(16) 

der Text erscheint auf der gleichen Größe und Emulator-Gerät zu sein.

Allerdings, wenn ich die Größe in Dimensionen geben Datei:

<resources> 
    <dimen name="default_text_size">5sp</dimen> 
</resources> 

und ich habe zwei Ansätze versucht programmatisch für die Einstellung dieser Größe:

defaultTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, getContext().getResources().getDimension(R.dimen.default_text_size)); 

und

defaultTextView.setTextSize(getContext().getResources().getDimension(R.dimen.default_text_size)); 

Both von ihnen zeigen unterschiedliche Größe auf dem realen Gerät und auf dem Emulator.

Siehe beigefügte Screenshots.

Haben Sie eine Idee, wie Sie dieses Problem beheben können? Ich weiß, dass sich das aufgrund der Bildschirmauflösung ändern wird, aber das ist eine drastische Veränderung. Der gesamte Text ist im Falle eines Emulators in der oberen Hälfte der ListView-Zeile geschrumpft. Was ich nicht will.

Emulator

Real Device

+0

Können Sie überprüfen, dass beide Geräte haben keinen Skalierungsfaktor in den Einstellungen für Schriftgröße? – elmorabea

+0

Danke. Dies war einer der Faktoren und ich habe es mit layout_weight aussortiert. Jetzt schrumpft der Text nicht mehr zur oberen Hälfte. – Manpreet

Antwort

1

Maßstab unabhängige Pixel (sp) - das ist wie die dp-Einheit, aber es ist auch durch die Schriftgröße Präferenz des Benutzers skaliert. Es wird empfohlen, dass Sie dieses Gerät bei der Festlegung der Schriftgrößen verwenden, so dass sie für sowohl die Bildschirmdichte als auch die Benutzervorlieben angepasst werden.

Wenn Sie die Größe Einheit von Text (in Textview) gesetzt, wie sp es wird auch abhängig von der Benutzer/Gerät Schriftgröße bevorzugt. Aus diesem Grund kann Ihr Text auf verschiedenen Geräten anders aussehen.

Wenn Sie Ihren Text überall gleich erscheinen (unabhängig von der Schriftgröße Vorlieben des Benutzers), verwenden dp statt:

<resources> 
    <dimen name="default_text_size">5dp</dimen> 
</resources> 
+0

Danke für den Vorschlag. Ich wollte jedoch, dass es auf der Bildschirmgröße basiert, aber das Problem war, dass der Text bis zur oberen Hälfte schrumpfte. Ich gab ihnen gleiches layout_weight und es funktioniert jetzt. Danke – Manpreet

+0

@Manpreet - Ich bin froh, dass Sie eine Lösung gefunden haben. –

Verwandte Themen