[JAVA] Tipps, damit das horizontale Scrollen gut aussieht, wenn RecyclerView oder ViewPager in der Navigationsleiste eingestellt ist

Selbst wenn RecyclerView oder ViewPager im DrawerLayout festgelegt ist, wird die Bewegung zum Schließen der Schublade für das horizontale Scrollen priorisiert, und das vertikale Scrollen und das Umschalten der Tabulatortaste werden durch die Schließbewegung gezogen, sodass sie nicht bequem bedient werden kann.

Mit den folgenden Einstellungen können Sie die Bewegung beenden, um die Schublade zu schließen, die beim horizontalen Scrollen im DrawerLayout auftritt. Sie können die Schublade auch schließen, indem Sie horizontal von der Außenseite der Schublade scrollen.

    //In Aktivität usw., wo DrawerLayout festgelegt ist
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        DrawerLayout.DrawerListener drawerListener = new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                //Deaktivieren Sie das horizontale Scrollen in der Schublade sofort nach dem Öffnen
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                //Wenn geschlossen,Aktivieren Sie das horizontale Scrollen
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNDEFINED);
            }

            @Override
            public void onDrawerStateChanged(int newState) {
                //Bei geöffneter Schublade ändert sich der Zustand,Wenn die Schublade wieder geöffnet ist,Deaktivieren Sie das horizontale Scrollen in der Schublade
                if (newState == DrawerLayout.STATE_IDLE && mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
                    mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
                }
            }
        };

        mDrawerLayout.addDrawerListener(drawerListener);
        mDrawerLayout.setOnTouchListener((v, event) -> {
            //Beim Berühren der Außenseite der Schublade,Aktivieren Sie das horizontale Scrollen
            if (mDrawerLayout.isDrawerOpen(Gravity.LEFT) && event.getAction() == MotionEvent.ACTION_DOWN) {
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNDEFINED);
            }
            return false;
        });
    }

Recommended Posts

Tipps, damit das horizontale Scrollen gut aussieht, wenn RecyclerView oder ViewPager in der Navigationsleiste eingestellt ist
Hinweise zur Vorgehensweise bei der Einrichtung von EC2 mit t2.micro