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 :

LinearLayout.onScrollChanged : la position ne concorde pas avec la hauteur du composant


Sujet :

Android

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut LinearLayout.onScrollChanged : la position ne concorde pas avec la hauteur du composant
    Bonjour,

    J'ai un petit souci dont je n'arrive pas à trouver la cause.
    J'ai une Activity composée d'un LinearLayout encapsulé dans un ScrollLayout.
    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
    26
    27
     
    <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" android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="10dp"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context="activity.ResultActivity"
        android:id="@+id/result_main">
     
        <view.VerticalScrollView
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:id="@+id/scroll">
     
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/list"></LinearLayout>
     
        </view.VerticalScrollView>
    </RelativeLayout>
    Le LinearLayout est construit dynamiquement. Je souhaite charger ce LinearLayout avec des données complémentaires lorsque l'utilisateur a scrollé jusqu'en bas de la page.
    Pour savoir quand le bas de la page est atteint, j'ai redéfini la méthode ScrollView.onScrollChanged() :
    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
    26
    27
    28
    29
     
    public class VerticalScrollView extends ScrollView {
     
        private IVerticalScrollListener listener;
        private LinearLayout list;
     
        public VerticalScrollView(Context context, AttributeSet attributes) {
            super(context, attributes);
        }
     
        public void setListener(IVerticalScrollListener listener) {
            this.listener = listener;
        }
     
        @Override
        protected void onScrollChanged(int x, int y, int oldx, int oldy) {
            super.onScrollChanged(x, y, oldx, oldy);
     
            if (list == null) {
                list = (LinearLayout) findViewById(R.id.list);
            }
     
            final int bottom = list.getMeasuredHeight();
            if (y >= bottom) { // cette condition n'est jamais atteinte !!!
                listener.onPageBottomReached();
            }
        }
     
    }
    Le problème est que les valeurs "y" et "bottom" ne concordent jamais. "y" reste toujours strictement inférieur d'environ 20% de la hauteur du LinearLayout.
    Quelqu'un voit-il d'où vient mon problème ?

    Merci.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    Y correspond à la coordonnée TOP non ?
    Il faudrait pas que tu ajoutes la hauteur d'une vue pour faire ta condition ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Points : 653
    Points
    653
    Par défaut
    Je pense en effet que c'est la coordonnées top. Mais cela ne suffit pas à expliquer la différence de 20%.

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/11/2007, 14h56
  2. [debutant] premier pas avec le SDK directX9
    Par arno2004 dans le forum DirectX
    Réponses: 6
    Dernier message: 27/05/2004, 21h03
  3. Rollback ne marche pas avec interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/03/2004, 08h39
  4. Programme fonctionnant sur Eclipse mais pas avec le jar?
    Par kirik dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/02/2004, 13h43
  5. Réponses: 3
    Dernier message: 12/05/2003, 12h11

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