Jump to content

Adapter les composants Android à la résolution


Kronn
 Share

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.

Link to comment
Share on other 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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...