Je suis un développeur Android. Je souhaite également utiliser un ScrollView. Ce ScrollView doit désactiver le défilement pendant un certain temps et activer le défilement un certain temps. Mais je ne peux pas désactiver le défilement. l'implémenter. S'il vous plaît aidez-moi. J'essaie également d'utiliser le code tel que
fullparentscrolling.setHorizontalFadingEdgeEnabled(false);
fullparentscrolling.setVerticalFadingEdgeEnabled(false);
ou
fullparentscrolling.setEnabled(false);
Mais ça ne marche pas.
Essayez de cette façon
Créez votre CustomScrollview comme ceci
import Android.content.Context;
import Android.util.AttributeSet;
import Android.view.MotionEvent;
import Android.widget.ScrollView;
public class CustomScrollView extends ScrollView {
private boolean enableScrolling = true;
public boolean isEnableScrolling() {
return enableScrolling;
}
public void setEnableScrolling(boolean enableScrolling) {
this.enableScrolling = enableScrolling;
}
public CustomScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomScrollView(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isEnableScrolling()) {
return super.onInterceptTouchEvent(ev);
} else {
return false;
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (isEnableScrolling()) {
return super.onTouchEvent(ev);
} else {
return false;
}
}
}
Dans votre xml
// "com.example.demo" remplacez par votre nom de pack
<com.example.demo.CustomScrollView
Android:id="@+id/myScroll"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" >
</com.example.demo.CustomScrollView>
Dans votre activité
CustomScrollView myScrollView = (CustomScrollView) findViewById(R.id.myScroll);
myScrollView.setEnableScrolling(false); // disable scrolling
myScrollView.setEnableScrolling(true); // enable scrolling
J'ai mis l'écouteur tactile pour la vue de défilement et dans la méthode onTouch je reviens vrai. Cela a fait l'affaire pour moi.
mScrollView.setOnTouchListener( new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event)
{
return true;
}
});
Meilleur pour tous
Vous ne pouvez pas désactiver le défilement d'un ScrollView. Vous devez étendre à ScrollView et remplacer la méthode onTouchEvent pour retourner false lorsqu'une condition est vérifiée.
Vous pouvez modifier ScrollView comme suit pour désactiver le défilement
class LockableScrollView extends ScrollView {
...
// true if we can scroll (not locked)
// false if we cannot scroll (locked)
private boolean mScrollable = true;
public void setScrollingEnabled(boolean enabled) {
mScrollable = enabled;
}
public boolean isScrollable() {
return mScrollable;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
// if we can scroll pass the event to the superclass
if (mScrollable) return super.onTouchEvent(ev);
// only continue to handle the touch event if scrolling enabled
return mScrollable; // mScrollable is always false at this point
default:
return super.onTouchEvent(ev);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// Don't do anything with intercepted touch events if
// we are not scrollable
if (!mScrollable) return false;
else return super.onInterceptTouchEvent(ev);
}
}
pour plus d'informations, voici également la solution complète en cas de débordement de pile! Désactiver ScrollView par programme?
marquez ceci comme réponse pour les autres help..thank