android en utilisant les marges de plusieurs tailles d'écran
Salut j'ai créé une application que je veux courir à travers de multiples écrans que j'ai construit toute chose à HDPi. et quand je le lance sur un nouveau téléphone android avec un écran plus grand de l'alignement de choses. Je sais que c'est parce que j'ai mis en marge de la position des choses à l'aide de DP.
Ma question est quel est le meilleur pratiques pour l'utilisation des marges sur plusieurs tailles d'écran et/ou est-il un code que je peux définir qui peut se diviser/multiplier les DP basé sur la taille de l'écran?
Je suis désireux d'obtenir l'application sur autant de dispositifs que possible. mais c'est ma première application afin de ne pas entièrement sûr de savoir comment le faire. De sorte que toute aide serait grandement appréciée.
heres un exemple de ma mise en page
<?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"/>
écrans hdpi
écrans xhdpi
OriginalL'auteur Luke Batley | 2012-07-24
Vous devez vous connecter pour publier un commentaire.
Bien le point de l'ensemble de l'aide DP est de sorte que vous n'avez pas à vous inquiéter à ce sujet. Les marges seront à peu près les mêmes pour les différents appareils, mais si vous êtes en s'appuyant sur la doublure de choses sur un appareil, la résolution et la densité de combinaison, vous serez très certainement surpris de vous tester sur d'autres appareils.
Cela dit, si vous avez besoin de spécifier des marges différentes pour différentes tailles d'écran, il suffit d'ajouter un fichier XML dans
res/values
-- quelque chose commedimens.xml
:Puis ajoutez l'un de ces XMLs pour chaque périphérique spécifique qualificatif que vous avez besoin (par exemple,
values-large
,values-sw600dp
,values-xlarge
, etc.) et de modifier la valeur en tant que vous voyez l'ajustement. Lorsque vous souhaitez utiliser ces dimensions dans une mise en page, il suffit d'utiliser:Et Android va chercher la valeur correcte pour n'importe quel appareil, il arrive à être en cours d'exécution sur.
Je doute de vos marges ensuite, c'est probablement quelque chose d'autre dans votre mise en page causant le mauvais alignement.
Pouvez-vous nous fournir une capture d'écran?
j'ai ajouté à ma disposition, je suis juste ajouté les captures d'écran maintenant
Oh...il y a beaucoup de mal à cela (n'en déplaise). Vous voudrez peut-être regarder dans un TableLayout. Pour une chose, si vous avez votre TextView ensemble de wrap_content, la gravité n'a pas d'effet (comme la trame est la même taille que le contenu). De Plus, vos marges semblent assez arbitraire, et ne fonctionne que sur un écran, vous faites des tests sur. Mon conseil serait de se pencher sur TableLayout.
OriginalL'auteur kcoppock