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

Composants graphiques Android Discussion :

TextView coupé dans un GridLayout


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Par défaut TextView coupé dans un GridLayout
    Bonsoir à tous

    Je suis coincé depuis un petit bout de temps sur un truc tout bête. J'ai un GridLayout avec deux colonnes. Dans la première colonne j'ai une image et dans la seconde du texte (sur plusieurs lignes). Voici l'extrait XML :

    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
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="100dp"
        android:layout_marginRight="100dp"
        android:rowCount="3"
        android:columnCount="2">
     
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/btn_star_big_off"
            android:layout_column="0"
            android:layout_row="0"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:layout_row="0"
            android:text="Il y en a du texte. C'est vraiment long et le problème c'est que cela coupe. En fait il manque une partie droite correspondant à la largeur de l'image..."/>
    </GridLayout>
    Le problème c'est que la partie droite du TextView est hors zone et est donc invisible. Il semblerait que la largeur de cette zone masquée corresponde à la largeur de l'image. Il doit y avoir un truc magique à faire, mais je ne le connais pas encore.
    Je suis preneur de tout tour de passe-passe, tout en gardant la structure du layout.

    D'avance, merci pour votre réponse

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Par défaut
    Tu sais vinlap,
    GridLayout a été conçu pour afficher des composants sous formes de grille, et donc des composants occupant la même taille.
    Et c'est qu'il a fait : Il a donné à l'ImageView et au TextView la même taille mais comme l'écran est trop petit, il a donc agencer les deux composants.
    Je ne pense pas que ce layout soit adapté à ton code !!!

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Par défaut
    Citation Envoyé par lankoande Voir le message
    Tu sais vinlap,
    GridLayout a été conçu pour afficher des composants sous formes de grille, et donc des composants occupant la même taille.
    Et c'est qu'il a fait : Il a donné à l'ImageView et au TextView la même taille mais comme l'écran est trop petit, il a donc agencer les deux composants.
    Je ne pense pas que ce layout soit adapté à ton code !!!
    Merci pour ta réponse.

    Les colonnes de GridLayout ne sont pas de même taille dans ce case précis. Le TextView ne sort pas de l'écran, mais empiète sur le margin de droite.
    En relisant la documentation Android, je me suis aperçu que depuis la version 21, il y avait de nouveaux paramètres. J'ai donc essayé le code xml en version 19, et cela reste pareil.

    Je peux contourner le GridLayout à l'aide de deux LinearLayout imbriqués, mais j'aime bien comprendre pourquoi cela ne fonctionne pas, surtout si j'en ai vraiment besoin une prochaine fois...

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    GridLayout est fait pour avoir un layout en forme de carrés occupants un maximum d'espace. Par défaut si les carrés doivent déborder, ce sera sur la droite (et normalement il est possible de 'scroller', mais comme j'utilise pas trop ce layout là, j'avoue ne pas être très sur de cette dernière affirmation).

    Le TextView va couper le texte en fonction de la taille qui lui a été attribuée (par le GridLayout).


    Deux LinearLayout imbriqués oui... mais de toute manière dans ton fichier XML je ne vois que deux items... quel est l'interêt d'un GridLayout ou d'un double LinearLayout dans ce cas ?


    Après, pour faire des tableaux, il y a aussi TableLayout (et ses TableRow).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Par défaut
    Citation Envoyé par nicroman Voir le message
    GridLayout est fait pour avoir un layout en forme de carrés occupants un maximum d'espace. Par défaut si les carrés doivent déborder, ce sera sur la droite (et normalement il est possible de 'scroller', mais comme j'utilise pas trop ce layout là, j'avoue ne pas être très sur de cette dernière affirmation).

    Le TextView va couper le texte en fonction de la taille qui lui a été attribuée (par le GridLayout).


    Deux LinearLayout imbriqués oui... mais de toute manière dans ton fichier XML je ne vois que deux items... quel est l'interêt d'un GridLayout ou d'un double LinearLayout dans ce cas ?


    Après, pour faire des tableaux, il y a aussi TableLayout (et ses TableRow).
    J'ai simplifié au maximum mon fichier XML. J'ai d'autres objets à afficher. Voilà pourquoi j'ai besoin de deux LinearLayout imbriqués.
    Sinon, nous sommes bien d'accord de l'inutilité d'un GridLayout ou d'un double LinearLayout...

Discussions similaires

  1. Problème de taille d'un JPanel dans un GridLayout
    Par ZamZam340 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 30/04/2006, 20h56
  2. Probleme de coupe dans une chaine
    Par cryptorchild dans le forum Langage
    Réponses: 3
    Dernier message: 22/12/2005, 23h39
  3. [SWT]organisation des données dans un gridlayout
    Par whilecoyote dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2005, 17h24
  4. Centrer un JTextField dans un GridLayout
    Par JoJoS dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 24/08/2005, 19h14
  5. [swing] disposition des éléments dans un GridLayout
    Par al85 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 11/02/2005, 17h36

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