IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Pb d'alignement dans linearlayout


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut Pb d'alignement dans linearlayout
    Bonjour

    Je souhaite positionner deux TextView dans un linearLayout Vertical.
    Celui utilise tout l'espace disponible de l'activité.

    Un textView sera disposé en bas de l'activité et centré horizontalement ;
    l'autre sera centré horizontalement et verticalement dans l'espace
    restant au dessus du premier textView.

    Je lutte et je ne trouve pas comment ; j'ai fixé la gravité à Bottom pour le
    premier TextView mais il ne vas pas en bas.

    Ci dessous le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false"
        android:orientation="vertical"
        tools:context=".MainActivity" >
     
        <TextView
            android:id="@+id/TextView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal|center"
            android:text="@string/hello_world" />
     
        <TextView
            android:id="@+id/TextView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:text="@string/hello_world" />
     
    </LinearLayout>
    Je ne comprends pas pourquoi cela ne fonctionne pas.
    Une idée ?

    Merci
    Henri

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Ce que tu souhaite faire n'est pas possible avec un simple linearLayout.
    L'élément que tu veux obtenir au centre ne pourra jamais être vraiment au centre. Il sera obligatoirement décalé vers le haut, de la hauteur de l'élément se trouvant en dessous.

    Cependant, il est assez facile de faire ce genre de positionnement avec un RelativeLayout. As-tu déjà essayé d'utiliser cet élément ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Simon MARQUIS Voir le message
    Ce que tu souhaite faire n'est pas possible avec un simple linearLayout.
    L'élément que tu veux obtenir au centre ne pourra jamais être vraiment au centre. Il sera obligatoirement décalé vers le haut, de la hauteur de l'élément se trouvant en dessous.
    Bonjour
    Merci de ta réponse. C'est exactement cela que je désire faire ! Qu'ai je fais qui ne va
    pas ?

    Citation Envoyé par Simon MARQUIS Voir le message
    Cependant, il est assez facile de faire ce genre de positionnement avec un RelativeLayout. As-tu déjà essayé d'utiliser cet élément ?
    Oui, j'ai essayé et réussi mais d'après ce que j'ai compris, cela devrait être possible
    avec un linearLayout et ne serait ce que pour ma culture, je voudrai bien réussir.

    Henri

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Alors pour ta culture voici comment faire avec un LinearLayout.
    Mais tu vas peut être remarquer que le premier TextView n'est pas "parfaitement" centré verticalement (à cause du linearLayout)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false"
        android:orientation="vertical"
        tools:context=".MainActivity" >
     
        <TextView
            android:id="@+id/TextView1"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="@string/hello_world" />
     
        <TextView
            android:id="@+id/TextView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="@string/hello_world" />
     
    </LinearLayout>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Le centrage me convient, c'est ce que je veux.
    Ok, j'ai compris, c'est weight que je ne connaissais pas.

    Le résultat n'est pas exactement ce que je désire puisque le label
    s'agrandit en même temps qu'il se centre mais j'ai réussi avec des
    spacers (qui fonctionnent depuis que je connais weight !).

    Merci de ton aide.
    Henri

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Pour que le TextView garde une taille il faut utiliser un autre layout que le LinearLayout : le RelativeLayout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. forcer l'alignement dans un input text
    Par simoryl dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/12/2005, 12h10
  2. Aide pour un alignement dans un formulaire
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/08/2005, 14h13
  3. Alignement dans les cellules d'un tableau
    Par philippef dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/02/2005, 12h15
  4. Alignement dans un TListBox
    Par Griswold dans le forum Composants VCL
    Réponses: 6
    Dernier message: 05/12/2003, 21h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo