Android-la réalisation de ViewPager interdisant le glissement à gauche et à droite

table des matières

1. Origines

2 Implémentation de ViewPager personnalisé

3 Comment utiliser


1. Origines

Utilisez ViewPager + BottomNavigationView + plusieurs fragments pour créer rapidement une architecture de changement de page. L'une comporte quatre pages. En raison des besoins de test, vous devez bloquer les deux du milieu. La méthode est la suivante:

  • Définir des options non cliquables: dans le fichier de mise en page xml, l'attribut app: menu de BottomNavigationView est l'élément de chaque page, et l'attribut android: enabled de l'élément de page que vous ne souhaitez pas afficher est défini sur false et la page correspondante ne peut pas être affichée pour le moment;

  • Définissez BottomNavigationView pour qu'il ne glisse pas: mais BottomNavigationView n'a pas de méthode correspondante pour prendre en charge cette fonction.

2 Implémentation de ViewPager personnalisé

[Principe]: écrivez une classe CustomViewPager pour hériter de ViewPager, puis réécrivez onTouchEvent, onInterceptTouchEvent et ajoutez la méthode setSlidingEnable pour activer ou désactiver le glissement par des paramètres externes. Voici une brève explication de la méthode onInterceptTouchEvent:

  • Rôle: déterminer s'il faut intercepter l'événement tactile ci-dessus;
  • Paramètres:
    ——return false: n'intercepte pas l'événement et libère l'événement. L'événement sera passé au contrôle enfant de la vue courante, qui sera distribué et traité par la méthode dispatchTouchEvent dans le contrôle enfant;
    ——return true: intercepter l'événement et le remettre à la méthode onTouchEvent de la vue courante pour traitement;

[Code]:

public class CustomViewPager extends ViewPager {

    // the sliding page switch
    private boolean isSlidingEnable = true ;

    public CustomViewPager(Context context) {
        super(context);
    }

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    //重写此函数
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return  this.isSlidingEnable;
    }
    //重写此函数
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return this.isSlidingEnable;
    }

    public void setSlidingEnable(boolean slidingEnable) {
        isSlidingEnable = slidingEnable;
    }
}

3 Comment utiliser

private CustomViewPager homeViewPager = null;
homeViewPager = (CustomViewPager) findViewById(R.id.view_pager_home);
//中间涉及的其他步骤就不赘述了
​​​​​​​homeViewPager.setSlidingEnable(false);  //禁止左右滑动

Il y a un problème à noter ici: CustomViewPager est une classe personnalisée, nous devons utiliser ce CustomViewPager lorsque nous définissons le fichier de mise en page xml, sinon nous utilisons toujours l'original androidx.viewpager.widget.ViewPager, ici homeViewPager = (CustomViewPager) findViewById ( R.id.view_pager_home); signalera une erreur car le type ne correspond pas:

———————————————————————————————————

Cet article est l'article original du blogueur, veuillez indiquer la source pour la réimpression!

Si cet article vous est utile, levez votre riche petite main, suivez / commentez / aimez / collectez , c'est mon plus grand soutien!

Je vous souhaite une promotion et une augmentation de salaire, un bel avenir!

Je suppose que tu aimes

Origine blog.csdn.net/w464960660/article/details/109387520
conseillé
Classement