Aller au contenu

Adapter les composants Android à la résolution


Kronn

Recommended Posts

Bonjour,

Je suis débutant dans le développement android et j'aimerais avoir votre aide concernant un sujet.

J'ai commencer à developper une petite application et je souhaiterais que quelque soit la resolution de l'ecran où elle est installé, les composants s'adapte. Comment faire?

En effet j'ai développé de façon à que ce soit adapté à mon galaxy s3 (4.7 pouces). Cependant, quand on passe sur tablette ça reste la même taille et c'est horrible :S

Mon code:

<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"
   tools:context=".MainActivity" >
   <Button
    android:id="@+id/button_ChooseTheme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="50dp"
    android:drawableLeft="@drawable/noimage50"
    android:drawablePadding="10dp"
    android:textAlignment="2"
    android:textSize="@dimen/normal_text_size" />
   <TextView
    android:id="@+id/textView_ShowValueLib"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button_ChooseTheme"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="40dp"
    android:text="@string/showValueLib"
    android:textSize="@dimen/initul_text_size" />
   <EditText
    android:id="@+id/editText_ValueToConvert"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/textView_ShowValueLib"
    android:layout_below="@+id/textView_ShowValueLib"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:digits="0123456789.,"
    android:ellipsize="start"
    android:ems="10"
    android:gravity="center"
    android:inputType="numberDecimal"
    android:maxLines="1" />
   <Button
    android:id="@+id/button_Init_Unit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button_Final_Unit"
    android:layout_alignBottom="@+id/button_Final_Unit"
    android:layout_toLeftOf="@+id/textView_ShowResultLib"/>
   <Button
    android:id="@+id/button_Transfert"
    android:background="@drawable/transfert"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:padding="4dp"
    android:layout_alignBaseline="@+id/button_Init_Unit"
    android:layout_alignBottom="@+id/button_Final_Unit"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_toLeftOf="@+id/button_Final_Unit"
    android:layout_toRightOf="@+id/button_Init_Unit" />
   <Button
    android:id="@+id/button_Final_Unit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText_ValueToConvert"
    android:layout_marginTop="31dp"
    android:layout_toRightOf="@+id/textView_ShowResultLib"/>

   <TextView
    android:id="@+id/textView_ShowResultLib"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button_Transfert"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="40dp"
    android:text="@string/resultLib"
    android:textSize="@dimen/initul_text_size" />
   <TextView
    android:id="@+id/textView_ShowResult"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView_ShowResultLib"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="5dp"
    android:text="0,0"
    android:textSize="@dimen/result_text_size" />
</RelativeLayout>

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Pour que tes composants s'adaptent à la taille/résolution des différents écrans, il faut leur dire. C'est ce que tu fais par exemple avec un 'android:layout_centerHorizontal="true"' qui fait que ton composant sera centré horizontalement, quelque soit la largeur de l'écran. De même avec 'android:layout_below' et autres 'android:layout_toLeftOf' dans un RelativeLayout, qui permet de positionner les composants relativement les uns par rapport aux autres, et non de manière absolue.

De manière générale, il faut absolument éviter les valeurs absolues (par ex. 'android:layout_height="50dp"' ;) ) qui ne permettent pas aux composants de s'adapter aux différentes dispositions d'écrans.

Tu peux aussi, pour des dispositions d'écran vraiment différentes (mode portrait et mode paysage) proposer des layouts alternatifs (une définition d'un écran pour le mode portrait, et une autre définition du même écran pour le mode paysage par ex.) de façon à adapter au mieux tes écrans.

Je t'invite à consulter, si ce n'est déjà fait, la documentation Android sur le sujet du support multi-écrans

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...