android mit Margen über mehrere Bildschirmgrößen
Hallo ich habe eine app erstellt, ich will laufen über mehrere Bildschirme hinweg. ich baute die ganze Sache am HDPi. und wenn ich es auf eine neuere android-Handy mit einem größeren Bildschirm die Ausrichtung der Sachen ist raus. Ich weiß, das ist, weil ich die Ränder zu positionieren, Dinge mit DP.
Meine Frage ist, was ist die best practices für die Verwendung von Margen über mehrere Bildschirmgrößen und/oder gibt es einige Codes, die ich einstellen kann, dass kann dividieren/multiplizieren Sie die DP basiert auf der Display-Größe?
Ich bin zu wollen, um die app auf vielen Geräten wie möglich. aber dies ist meine erste app so nicht ganz sicher, wie dies zu tun. Also jede Hilfe wäre sehr geschätzt werden.
heres ein Beispiel von meinem layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="20dip"
android:background="@drawable/bg_tablecell"
android:orientation="horizontal"
android:weightSum="1"
>
<TextView
android:id="@+id/position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:paddingLeft="4dip"
android:text="@string/POS"
android:textSize="15dip"
android:textColor="@color/blue"
/>
<TextView
android:id="@+id/TeamName"
android:layout_width="90dip"
android:layout_height="wrap_content"
android:layout_marginLeft="23dip"
android:ellipsize="end"
android:gravity="left"
android:lines="1"
android:text="@string/Team"
android:textColor="@color/blue"
android:textSize="15dip"
android:textStyle="bold"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/played"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/TeamName"
android:layout_alignBottom="@+id/TeamName"
android:layout_marginLeft="35dip"
android:layout_toRightOf="@+id/TeamName"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/won"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/played"
android:layout_alignBottom="@+id/played"
android:layout_marginLeft="17dip"
android:layout_toRightOf="@+id/played"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/drawn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/won"
android:layout_alignBottom="@+id/won"
android:layout_marginLeft="16dip"
android:layout_toRightOf="@+id/won"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/lost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/drawn"
android:layout_alignBottom="@+id/drawn"
android:layout_marginLeft="16dip"
android:layout_toRightOf="@+id/drawn"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/goalsFor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/lost"
android:layout_alignBottom="@+id/lost"
android:layout_marginLeft="16dip"
android:layout_toRightOf="@+id/lost"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/goalsAgainst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/goalsFor"
android:layout_alignBottom="@+id/goalsFor"
android:layout_marginLeft="17dip"
android:layout_toRightOf="@+id/goalsFor"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/Difference"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/goalsAgainst"
android:layout_alignBottom="@+id/goalsAgainst"
android:layout_marginLeft="15dip"
android:layout_toRightOf="@+id/goalsAgainst"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Difference"
android:layout_alignBottom="@+id/Difference"
android:layout_marginLeft="18dip"
android:layout_toRightOf="@+id/Difference"
android:gravity="center"
android:text="@string/Zero"
android:textColor="@color/blue"
android:textSize="10dip"
android:layout_centerVertical="true"/>
hdpi-Bildschirme
xhdpi Bildschirme
InformationsquelleAutor Luke Batley | 2012-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowie der ganze Punkt, der mit Hilfe von DP ist, so dass Sie nicht haben, um über sorgen. Die Margen in etwa den gleichen Geräten, aber wenn man sich auf Dinge auszurichten, die auf einem bestimmten Gerät-Auflösung/Dichte Kombination, Sie werden auf jeden Fall für eine überraschung, wenn Sie test auf anderen Geräten.
Sagte, dass, wenn Sie tun müssen, geben Sie unterschiedliche Ränder für verschiedene Bildschirm-Größen, fügen Sie einfach eine XML-Datei in
res/values
-- so etwas wiedimens.xml
:Fügen Sie dann eine dieser XML-Dateien für jede spezifische device-qualifier, die Sie brauchen, um (z.B.
values-large
,values-sw600dp
,values-xlarge
usw.) und ändern Sie den Wert wie Sie sehen, passen. Wenn Sie verwenden möchten, diese Dimensionen in einem layout, das einfach zu verwenden:Und Android, Holen Sie den richtigen Wert für was auch immer Gerät, auf dem er ausgeführt wird.
Ich bezweifle, dass es Ihre Margen dann, es ist wahrscheinlich etwas anderes in Ihrem layout verursacht die Fehlstellung.
Kannst du uns ein screenshot?
ich habe mein layout-ich bin nur Hinzugefügt die screenshots jetzt
Oh...gibt es eine Menge falsch mit, dass (nichts für ungut). Vielleicht möchten Sie sich in ein TableLayout. Für eine Sache, wenn du dein TextView gesetzt wrap_content, die Schwerkraft hat keine Wirkung (wie die Rahmen die gleiche Größe wie der Inhalt). Plus, werden Ihre Ränder scheinen ziemlich willkürlich und würde nur funktionieren, auf dem einen Bildschirm, den Sie testen wollen. Mein Rat wäre, zu schauen, TableLayout.
InformationsquelleAutor kcoppock