2016-08-15 3 views
0

J'ai un ScrollView et un TextView imbriqué. Lorsque je l'ai défini setOnTouchListener, les gestes sont reconnus mais le défilement ne fonctionne pas. Et si je mets setOnTouchListener à TextView imbriqué, son fonctionnement bien. J'ai essayé de googler mais je n'ai pas pu résoudre le problème. Mais mon besoin est de mettre le setOnTouchListener à ScrollView.Le défilement ne fonctionne pas lorsque je mets GestureListener à ScrollView

Aidez-nous s'il vous plaît.

layout.xml

<ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#FF0000" 
      android:id="@+id/scrollView"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 

       <TextView 
        android:id="@+id/tv" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:textColor="#000000" 
        android:background="#00FF00" 
        android:padding="15dp" 
        android:textSize="18sp" /> 
      </LinearLayout> 
     </ScrollView> 

MainActivity.java

mGestureDetector = new GestureDetectorCompat(this,this); 
     findViewById(R.id.scrollView).setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, final MotionEvent event) { 
       Log.e("Stark", "setOnTouchListener"); 
       mGestureDetector.onTouchEvent(event); 
       return true; 
      } 
     }); 
+2

Pas tout à fait sûr, mais je crois que vous dites avec le retour vrai dans votre onTouch, qu'il a manipulé le touchervent. De cette façon, ScrollView ne gère plus le touchervent (le défilement) – Stefan

+0

Vous avez basculé. Cela fonctionnait en définissant return sur false. Merci :) –

Répondre

0

Pourquoi vous devez définir OnTouch. Si seulement faites défiler vers le haut et vers le bas. Essayez ci-dessous

ScrollView sv; 

sv.post(new Runnable() { 
       @Override 
       public void run() { 
        sv.fullScroll(View.FOCUS_DOWN); 
       } 
      }); 

assurez-vous d'avoir ceci dans scrollview xml. J'espère que cela aide.

android:fillViewport="true"