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 :

Ajuster la hauteur d'une ligne d'une Gridview à l'item le plus grand


Sujet :

Android

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut Ajuster la hauteur d'une ligne d'une Gridview à l'item le plus grand
    Bonjour,

    Pour mon appli, j'ai un glossaire qui se présente sous la forme d'une Listview (item composé de 2 textes et 1 image). Mais pour les écrans larges, j'ai décidé d'afficher cette liste sur 2 colonnes, comme ci dessous.
    A B
    C D
    E F

    Le seul moyen valable était de passer par une GridView, mais un problème est apparu : la hauteur d'une ligne est TOUJOURS déterminée par la hauteur de l'item de droite, ce qui est bon dans 80% des cas. Mais pour le reste, soit j'ai des supperpositions (cas d'une image trop petite à droite), soit un blanc se forme (car d'une image trop grande).

    Auriez vous une idée ou une solution pour régler ce problème ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    Personne ayant déjà rencontré ce problème ne peut m'aider ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    J'ai un peu résolu le problème. Dans la méthode getView, j'ai créé cette condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	LayoutParams lp = convertView.getLayoutParams();
    	if (position % 2 == 1) {
    	    View previous_view = parent.getChildAt(position - 1);
    	    int previous_height = previous_view.getMeasuredHeight();
     
    	    if (previous_height > lp.height) {
    		lp.height = previous_height;
    	    }
    	    convertView.requestLayout();
    	}
    Et ca marche très bien sur tous les items visibles, mais dès que je scrolle pour voir le reste de la GridView, une erreur apparait:
    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
    05-29 12:18:18.091: E/AndroidRuntime(1923): FATAL EXCEPTION: main
    05-29 12:18:18.091: E/AndroidRuntime(1923): java.lang.NullPointerException
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at com.turvy.organicreaction.adapters.GlossaryAdapter.getView(GlossaryAdapter.java:100)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.widget.AbsListView.obtainView(AbsListView.java:2251)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.widget.GridView.makeAndAddView(GridView.java:1331)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.widget.GridView.makeRow(GridView.java:331)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.widget.GridView.fillDown(GridView.java:283)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.widget.GridView.fillGap(GridView.java:243)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5036)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4193)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.view.Choreographer.doCallbacks(Choreographer.java:555)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.view.Choreographer.doFrame(Choreographer.java:524)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.os.Handler.handleCallback(Handler.java:615)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.os.Looper.loop(Looper.java:137)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at java.lang.reflect.Method.invoke(Method.java:511)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    05-29 12:18:18.091: E/AndroidRuntime(1923): 	at dalvik.system.NativeStart.main(Native Method)
    Une suggestion ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. copier une ligne d'une table vers une autre
    Par Adren dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2006, 11h54
  5. [VB6]créer une copie d'une ligne d'une table
    Par h82kev dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/02/2006, 16h08

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