Android-Formularelemente haben unterschiedliche Größen auf verschiedenen Emulatoren

9

Update # 1

Ich habe beobachtet, dass die Einstellung von <item name="android:textSize">14sp</item> als 20sp in /res/values/styles.xml dazu führt, dass die Eingabeelemente auf Geräten mit weniger als 5 "normal angezeigt werden. Es scheint, dass das Reduzieren der Textgröße die Größe des Eingabefeld. Soll das normal sein?

TLDR-Version

Hallo,

Ich habe ein Problem mit der Größe der Eingabeelemente in meinem Android-Projekt. Die Eingabeelemente erscheinen größer auf Geräten, die & lt; 5 "groß, aber ansonsten auf meinen größeren Geräten normal.

Die folgenden Screenshots veranschaulichen dies. Irgendeine Idee was könnte die Ursache sein?

Detaillierte Version

Hallo,

Ich habe derzeit ein seltsames Problem mit der Größe meiner Formularelemente in meinem Android-Projekt über verschiedene Emulatoren. Da dies das erste Mal ist, dass ich eine mobile Anwendung erstelle, kannst du mich gerne aufklären, ob dies ein "Feature" ist und kein Bug.

In der Nexus 7 Layoutvorschau erscheinen die Formularelemente wie erwartet:

In der Galaxy Nexus-Layoutvorschau erscheinen die Formularelemente jedoch größer als erwartet, was nicht wünschenswert ist:

Ich habe viele Methoden ausprobiert, konnte dieses Problem jedoch nicht lösen. Dieses Problem tritt auf allen Geräten auf, die weniger als 5 "in Bildschirmgröße sind.

Hier ist meine Layout-XML-Datei:

%Vor%

Meine /res/values/styles.xml:

%Vor%

Meine /res/values-large/styles.xml:

%Vor%

Bitte lassen Sie mich wissen, wenn Sie das schon einmal erlebt haben und eine Vorstellung davon haben, was die Ursache sein könnte :) Vielen Dank!

    
Lai Xin Chu 17.05.2013, 01:48
quelle

3 Antworten

1

Ich habe dieses Problem gelöst, indem ich einen anderen Wert für die Eigenschaft android:layout_height in /res/values-xlarge/styles.xml , /res/values-large/styles.xml , /res/values/styles.xml , /res/values-small/styles.xml angegeben habe.

Dadurch konnte ich die genaue Höhe jedes Eingabefeldes in Android-Geräten unterschiedlicher Größe steuern.

    
Lai Xin Chu 23.05.2013, 05:22
quelle
0

Es wird angezeigt, dass die Bildschirmdichte von Galaxy Nexus xhdpi

ist

Sie können res/values-xhdpi/ hinzufügen und Werte für Geräte in der Galaxy Nexus-Bildschirmfamilie hinzufügen. Sie können auch mit sw<N>dp spielen (für Galaxy Nexus wäre das res/values-sw320dp/ ; die tatsächlichen Bildschirmabmessungen sind 360dp X 567dp , das heißt, obwohl values-sw320dp Galaxy Nexus enthalten würde, wird es auch alle anderen Geräte einschließen mit minimaler Breite / Höhe von 320dp ), w<N>dp und / oder h<N>dp . Siehe die Tabelle in Bereitstellung alternativer Ressourcen .

    
ozbek 21.05.2013 05:18
quelle
0
  

In der Layout-Vorschau des Galaxy Nexus erscheinen jedoch die Formularelemente   größer als erwartet, was nicht wünschenswert ist

Eigentlich ist es nicht größer. Das EditText hat auf beiden Geräten die exakt gleiche physikalische Größe. So arbeiten dichteunabhängige Pixel (dp). Sie skalieren alles basierend auf der Dichte-Grundlinie, so dass alles über mehrere Geräte gleich groß ist. Dies ist besonders nützlich, wenn Sie zwei Geräte haben, die die gleiche Bildschirmgröße, aber unterschiedliche Dichten haben. Daher bleibt die physische Größe der UI-Elemente auf beiden Geräten gleich. Wenn Sie Pixel (px) verwendet hätten, wäre das sehr unterschiedlich (Die physikalische Größe des Geräts mit einer höheren Dichte wäre kleiner als die des Geräts mit der niedrigeren Dichte).

Es erscheint größer, weil 1. Die Benutzeroberfläche von Galaxy Nexus und Nexus 7 im UI-Editor ist auf (fast) den gleichen Formfaktor 2 skaliert. Sie legen unterschiedliche Textgrößen für beide fest . So sieht das eigentlich aus:

Die EditTexts auf beiden Geräten (Die Screenshots stammen tatsächlich von meinem Nexus 4, das nur eine etwas höhere Dichte als GN hat, also sollte es kein großes Problem sein, und mein Nexus 7) hat die gleiche Höhe , aber das N4 hat einen kleineren Text (weil Sie es so angegeben haben).

    
Ahmad 27.05.2013 00:34
quelle

Tags und Links