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 :

Item de liste avec 2 enfants overlapping


Sujet :

Android

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Par défaut Item de liste avec 2 enfants overlapping
    Bonsoir, voici mon soucis
    j ai une liste que je remplis avec des données via un arrayAdapter...jusque la rien de bien passionnant
    un item de liste (height: wrap_content, w:match_parent) est en fait un RelativeLayout contenant 2 enfants (ferrés en haut a gauche, superposés donc pour faire un swipe) dont
    1/ RelativeLayout (height: match_content, w:match_parent) contenant 2 TextViews et une ImageView
    les textViews sont séparés par des paddings.
    2/ un LinearLayout (height: match_content, w:match_parent) contenant 3 drawables

    le 2/ aura toujours la meme taille mais 1/ aura une taille tres changeante suivant la taille du texte a afficher

    Mon soucis est que 1/ et 2/ devraient avoir la meme taille ce qui n est pas le cas de 2/
    j ai essayé d appeler invalidate() ou autre requestLayout()... sans succes

    si quelqu un a une idée...

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Salut,

    Fixer la taille en dur ou bien te calculer la taille d'un LinearLayout et l'appliquer en le forçant dans ton RelativeLayout.

    A toi de voir.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Par défaut
    Merci pour ta réponse
    étant débutant j ai besoin de précisions
    cela signifie t il que mon conteneur doit etre une classe étandant celle de base (RelativeLayout), attendre onMeasure() et appliquer le layout a l enfant incriminé?
    ...je sais pas trop la

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Ok pas de souci

    Soit tu fixes depuis le code xm avec par exemple android:height="46dp" au Linearlayout et au RelativeLayout.

    Soit tu attends que le linearLayout soit construit tu récupère la bonne taille et tu l'assigne au RelativeLayout.

    Ou dernière possibilité celle là elle est drôle , Tu affiches un LinearLayout sous le RelativeLayout que tu rends invisible et tu donnes comme contrainte a ton Relative le fait qu'il doit être aligné par rapport au LinearLayout en dessous .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Par défaut
    OMG!
    bon en gros comme mon layout parent n a pas de soucis
    ca veut donc dire que je dois attendre que le 1er enfant soir dessiné (avec sa taille variable)
    que je recupere le layout dans le parent (vu qu il est bien dimensionné) et que je l affecte a l autre enfant qui est parti en cacahuette... ???

    du coup c est bien ce que je dis je dois faire une classe "parent" custom pour maitriser tout ca
    ca se passe dans onMeasure?

    (merci et désolé pour cette demande de détail c est pas bien clair pour moi tout ça)

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Salut,

    Et soit pas désolé c'était pour bien expliquer le problème et montrer que cette solution est compliqué à mettre en place.

    Donc fixe la taille en dp depuis le fichier xml .

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Par défaut
    merci mais ce n est pas possible puisque mon layout parent se resize suivant le contenu text du 1er layout enfant qui lui meme se resize suivant une quantité de texte a afficher ...que je ne connais pas d avance (reponse serveur)

  8. #8
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Pourtant tu annonces bien que le LinearLayout aura toujours la même taille

    le 2/ aura toujours la meme taille mais 1/ aura une taille tres changeante suivant la taille du texte a afficher
    De toute manière tu n'auras pas le choix que ton RelativeLayout est une taille qui ne lui conviennent pas.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Par défaut
    ha oui effectivement je me suis planté en expliquant , ce qu'il fallait comprendre c'est que les assets contenus auront toujours la même taille mais le fond de mon layout (donc le layout) devra correspondre

    en gros sur l'application gmail quand on fait un swipe sur un item de la liste de mail, l'élément en dessous est celui qui me pose problème (en sachant que bien sur sur gmail tous les éléments ont la même taille ce qui supprime le problème...)

    ...j'ai l'impression de m’emmêler encore plus dans mes explications le

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Par défaut
    Bonjour...toujours sur le même problème je pète un câble...
    j aimerais revenir sur la proposition de
    "Soit tu attends que le linearLayout soit construit tu récupère la bonne taille et tu l'assigne au RelativeLayout."

    comment savoir que le linearLayout a été construit, affiché mesuré depuis son parent?

  11. #11
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    comment savoir que le linearLayout a été construit, affiché mesuré depuis son parent?
    C'est assez complexe en effet... Cad que l'on pourrait dire tu construit tes Relatives tel quel mais si tu vois un LinearLyout tu inflate la view récupère sa hauteur et notifie la liste de se réafficher
    Pour l'expérience utilisateur c'est un peu ignoble.

    Du coup ce que tu peux faire car je ne vois pas mieux, c'est de toujours mettre un LinearLayout dans ton item en dessous de ton RelativeLayout et d'aligner ton Relative sur le Top et bottom de ton LinearLayout.
    Depuis ta liste tu mettre INVISIBLE ton LinearLayout ou bien ton relative Layout.

    Du coup le xml de l'item devrait ressembler a cela

    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
    <RelativeLayout>
    <LinearLayout
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    alignParentTop="true"
    />
    <RelativeLayout
    android:id="@+id/relative"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:alignTop="@id/linear"
    android:alignBottom="@id/linear"
    />
    </RelativeLayout>

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 47
    Par défaut
    j ai absolument pas compris la solution mais ca fonctionne
    j imagne que le align top/bottom a forcé le layout conteneur a refaire une passe de measure() ou qq chose comme ca...
    je suis débutant et je trouve que c est bien baleze a prendre en main quand meme

    reste que mes éléments restent alignés en haut mais je vais tester quelques solutions
    Merci

Discussions similaires

  1. [Débutant] Afficher les propriété d'une liste avec un item d'une autre liste
    Par jubourbon dans le forum Développement Sharepoint
    Réponses: 8
    Dernier message: 19/12/2013, 17h57
  2. [Débutant] Afficher items de liste avec REST + JSON
    Par Leilou dans le forum SharePoint
    Réponses: 3
    Dernier message: 11/08/2013, 17h32
  3. Réponses: 3
    Dernier message: 12/03/2009, 15h41
  4. Liste avec ascenceur
    Par Guitch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/10/2004, 16h32
  5. [MFC] creer une liste avec des check????
    Par ginounet dans le forum MFC
    Réponses: 4
    Dernier message: 16/06/2004, 12h47

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