Android Single-Layout-passend für Alle Bildschirmgrößen
Ich bin eine Aktualisierung meiner Android-app und erkannte, dass ich erstellt habe, ein layout für jede mögliche Bildschirmgröße (layout-kleine layout-große, etc...) Es wäre ein großer Schmerz durch zu gehen, jede XML-Datei manuell eine kleine änderung. Ich bin versucht, erstellen Sie eine einzelne XML-Datei unterstützt alle Bildschirm-Größen. Nach der überprüfung der Android-Dokumentation und anderen Fragen auf stackoverflow, es scheint LinearLayout ist die beste Wahl, wie Sie eine weightSum und layout_weight für jedes Element im layout. Dies ist nicht wie erwartet funktioniert (siehe code unten und Bilder). Mache ich das richtig? Muss ich zurück zu gehen, um die Schaffung einer RelativeLayout für jede mögliche Bildschirmgröße?
Meine Bilder sind eine einzige drawable-Ordner und meine layouts in einem einzigen layout-Ordner.
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
android:gravity="center"
android:orientation="vertical"
android:weightSum="100" >
<ImageButton
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/image0"
android:background="@null"
android:layout_weight="30" />
<ImageButton
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/image1"
android:background="@null"
android:layout_weight="30" />
<ImageButton
android:id="@+id/key"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="30"
android:background="@null"
android:src="@drawable/image0_key" />
<TextView
android:id="@+id/tvScore"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Score: 0"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="10"
android:layout_gravity="left" />
</LinearLayout>
Resultierende Ansicht (überlauf der Elemente und layout nicht konsistent sind für Bildschirm-Größen)
Nexus One:
Tablet:
BEARBEITEN:
Ich habe die folgenden drawable-____ Ordner. Es produziert das gleiche Ergebnis.
Nach dem ändern der layout_height jedes Kind 0dp, ändert sich nichts. Sieht genau so aus wie obige Bilder.
Sie müssen verstehen, wie Gewicht zu Werke. Layout Gewicht verteilt wird, NACHDEM das layout gemessen wird (in einem zweiten Durchgang), so dass Sie haben, um Bilder, die die gleiche Dichte, die in jedes display Dichte, sonst gibt ' s nichts zu tun. Das system nutzt den FREIEN Speicherplatz, nachdem die Bilder gelegt worden.
Ok, also du sagst ich brauche Bilder für jede Dichte? (hdpi, mdpi, ldpi, xhdpi)
Ja, sonst werden die Bilder immer die gleiche Größe, und das einzige, was sich ändert, ist die "verbleibenden" Raum, nachdem alle Bilder platziert wurden.
InformationsquelleAutor Shane | 2013-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie vielleicht erwägen, Kompatibilität layout Ordner. 🙂
InformationsquelleAutor Toshi
Ja, wir haben eine Lösung für das gleiche durch die Verwendung von android-Prozent-layout können wir nun verwenden
app:layout_heightPercent
undapp:layout_widthPercent
passen alle Bildschirme mit single-layout.Warum LinearLayout
weight
Eigenschaft jetzt haben wir eine einfachere Lösung.Betrachten wir ein einfaches Beispiel,
Hoffe, es ist nützlich für jemanden 🙂
InformationsquelleAutor nitesh
Verwenden Sie die folgende layout für die Organisation Ihrer ImageButton und TextView. Es funktioniert für alle Bildschirmgröße Layouts.
InformationsquelleAutor Ronak Badjatya
Nie ein Gewicht Summe, wie hundert ,nur versuchen, einzelne Ziffern
InformationsquelleAutor Parvathi Krishnan
//(YourObject) kann alles sein, wie button , Bild, button, textview,...
InformationsquelleAutor Milad gh
Gibt es hier zwei Probleme, eines ist, füllen Sie die Größe des Bildschirms und die andere ist die Unterstützung der verschiedenen Auflösung, Größen von Handys. Auch innerhalb xxxhdpi gibt es Variationen als neues Flaggschiff Samsung Handys Driften, 19,5 x 16.
Linearer Anordnung zusammen mit Gewicht-Attribute geben eine gute Abdeckung, aber hüten Sie sich vor der verschachtelten tags und Leistung. Es hat gut funktioniert für die meisten Szenarien, die ich behandelt haben.
Zusätzlich, wie schon in anderen Antworten, verschiedene drawables/Ressourcen für die standard-Größen, hilft die Aufrechterhaltung ähnliche Ansicht, bei allen Geräten.
InformationsquelleAutor Nitin Jain