App soll auf allen Geräten laufen

K

Knoxxx

Fortgeschrittenes Mitglied
0
Hallo,

wie stelle ich es bei Eclipse ein, dass meine App auf allen, also auch älteren Geräten funktioniert? Weil bei einigen Geräten sind meine Buttons völlig verrutscht und assymetrisch. Wie geht das weg?

VG
Knoxxx
 
Zuletzt bearbeitet:
Hi
deine Frage ist leider etwas ungenau gestellt, deshalb kann ich dir nur ein paar allgemeine Tipps geben:
gib margin und padding angaben immer in dp, damit sie sich an die Bildschirmgröße und Auflösung anpassen.
Schreibe die Abmessung nicht direkt in die layout XML Dateien, sondern in die dimens.xml im values Ordner. So kannst du für verschiedene Displaygrößen und Displayorientierung unterschiedliche Werte ablegen. In der Layout datei verweißt du dann nur auf die diese Werte z. B.:
Code:
android:padding="@dimen/activity_horizontal_margin"
 
Wenn ich mir das Graphical Layout meiner einzelnen Activities anschaue, dann sehe ich auch, wie die jeweilige Activity auf dem Nexus7, Nexus 10 etc aussieht. Und dann unterscheiden sich die Abstände, Größen von Buttons usw teilweise zwischen den einzelnen Geräten, also zwischen Nexus7, Nexus10 etc unterscheidet sich das Graphical Layout teilweise...
 
Das ist auch zu erwarten, das Nexus 10 hat einen 10 Zoll Bildschirm, da verteilen sich die Views natürlich anders als auf einem 4 oder 7 Zoll Bildschirm. Poste mal den Code von einer der Layout XMLs, damit kann man besser beurteilen, was du anders machen könntest.
 
Na ja, ich habe nichts besonderes. Nur drei Buttons. Die sind bei Nexus 4 ganz normal und bei Nexus 7 sehr verschoben...oder liegt das vllt nur daran, dass die Abstände zwischen den Buttons nicht gleich sind? Trotzdem sind sie bei Nexus 7 viel stärker verschoben...


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"​
xmlns:tools="http://schemas.android.com/tools"​
android:layout_width="match_parent"​
android:layout_height="match_parent"​
android:background="@drawable/hintergrund"​
tools:context=".MainActivity" >​
<Button​
android:id="@+id/button1"​
android:layout_width="250dp"​
android:layout_height="100dp"​
android:layout_alignParentTop="true"​
android:layout_centerHorizontal="true"​
android:layout_marginTop="50dp"​
android:text="Button1" />​
<Button​
android:id="@+id/button2"​
android:layout_width="250dp"​
android:layout_height="100dp"​
android:layout_centerInParent="true"​
android:text="Button2" />​
<Button​
android:id="@+id/button3"​
android:layout_width="250dp"​
android:layout_height="100dp"​
android:layout_below="@+id/button2"​
android:layout_centerHorizontal="true"​
android:layout_marginTop="50dp"​
android:text="Button3" />​
</RelativeLayout>
 
Also jetzt in diesem konkreten Layout fehlt die Beziehung zwischen button1 und butten2, wenn du butten2 so folgendermaßen änderst sollte es überall gleich aussehen:
Code:
    <Button
        android:id="@+id/button2"
        android:layout_width="250dp"
        android:layout_height="100dp"
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Button2" />

damit wird Button2 50dp unter Butten1 angezeigt,
grundsätzlich solltest du aber die dp angaben in einer dimens.xml speichern. Dann kannst du für unterschiedliche Bildschirmgrößen unterschiedliche Abstände verwenden
 
kosmus schrieb:
Schreibe die Abmessung nicht direkt in die layout XML Dateien, sondern in die dimens.xml im values Ordner.
Das heißt ich gebe z.B. für die Textgröße Name = TextSize und Value = 50dp an und gebe dann im Layout.xml der jeweiligen Activity android:textSize="@dimen/TextSize" ein. Und dann passt sich das für jedes Android Gerät an?
 
standardmäßig sollte eclipse dir drei Values Ordner angelegt haben:
values
values-sw600dp
values-sw720dp

jeweils mit einer eigenen dimens.xml
in values kommen die Werte für handys. z. B. 32dp
in values-sw600dp dann für 7 Zoll Geräte. z. B. 64dp
in values-sw720dp dann für 10 Zoll z. B. 128dp

wenn du den werten in allen drei Dateien den gleichen namen gibts, wird sich jedes Gerät den für seine Displaygröße passenden Wert aussuchen
 
ok und das gilt dann wahrscheinlich nur für dp-Werte oder muss ich auch Sachen wie android:layout_centerInParent="true" in die dimens.xml schreiben?
 
Richtig die dimens dateien sind hauptsächlich für dp Werte gedacht.
 
ok, aber die dp-Werte müssen dann in den drei unterschiedlichen dimens.xml's unterschiedlich sein, je nachdem welches Gerät ich nutze, oder. Also ich kann jetzt bspw als Abstand zwischen den Buttons nicht jedes mal 50dp in alle dimens.xml schreiben, sondern muss die dp-Werte je nach Gerät anpassen, oder?
 
Du kannst auch für alle die gleichen Werte nutzen. Dann brauchst du aber auch die values-Unterordner nicht! Die sind ja extra dafür da, dass die jeweiligen Gerätegrößen sich die anderen Werte automatisch nehmen, ohne dass du viel Aufwand hast und du sehr gut die Layouts an andere Displaygrößen anpassen und so optimieren kannst, dass der Platz auf diesen Geräten sinnvoll genutzt wird oder es einfach besser aussieht.

In der Regel lässt man ja bei Tablets mehr Platz zwischen den Elementen usw.
 
Komisch, die Layouts unterscheiden sich immer noch von Gerät zu Gerät, was die Proportionen und Abstände anbelangt?!

reneph schrieb:
Du kannst auch für alle die gleichen Werte nutzen. Dann brauchst du aber auch die values-Unterordner nicht!
Aber dimens.xml sind doch die Unterordner der Values?!
 
dimens.xml kommt in den values-Ordner, ist korrekt.

Aber ich beziehe mich darauf, was dir kosmus gesagt hat mit den zusätzlichen Ordnern values-sw600 und values-sw720, wo auch eine dimens.xml dann rein käme (die Werte würden dann von den jeweilig betroffenen Gerätegrößen automatisch genommen). Aber wenn du in allen Ordnern die selben Werte drin hättest, dann kannst du die values-sw600 und/oder values-sw720 sparen. Das wollte ich sagen.


Außerdem: kannst ja mal Screenshots posten, dann fällts leichter zu sehen, was dich direkt stört :)
 
Ok, habe einen Screenshot angehängt. Die Buttons unterscheiden sich zwischen den einzelnen Geräten von der Größe her und Abstände verändern sich etc
 

Anhänge

  • Screenshot.png
    Screenshot.png
    45,6 KB · Aufrufe: 212
Sieht so aus als hättest du den button an der Bildschirmmitte platziert und Textview am oberen Rand ohne einen Abstand zu bestimmen. Die Schriftgröße wirkt auf einem großen display kleiner, das könntest du über die dimens Dateien regeln.

Den Abstand zwischen dem button und dem textview könntest du auch gleich halten, wenn du den button nicht an der Bildschirmmitte ausrichtet, sondern mit Android:layout_below.

Vielleicht solltest du für den Anfang lieber linear Layouts benutzen, die sind m.E. etwas leichter zu handhaben,
 

Ähnliche Themen

D
  • Data2006
3 4 5
Antworten
84
Aufrufe
3.705
jogimuc
J
B
Antworten
4
Aufrufe
491
bb321
B
Manny87
  • Manny87
Antworten
11
Aufrufe
166
swa00
swa00
Zurück
Oben Unten