Navigationsschublade – Deaktivieren Sie Klick auf Artikel hinter der Schublade

Gibt es eine Möglichkeit, um sicherzustellen, dass die Navigationsschublade bleibt oben auf den Inhalt in das Fragment?

Ich habe eine kleine Testanwendung mit Dummy-Daten erstellt. 10 Fragmente mit einer entsprechenden nummerierten Schaltfläche und Textansicht. Die Frage ist mit der Tatsache, dass die Fragment-Elemente eine höhere Priorität haben als die Navigationsschublade.

Bildbeschreibung hier eingeben

Wie in dem Screenshot zu sehen, sobald ich versuche, das "0-Fragment" zu öffnen, entscheidet man sich stattdessen, den Klick auf den Button hinter dem Navigationsschub zu registrieren. Das Drücken eines anderen Inhaltselements funktioniert gut, aber das ist so lange, wie es keine anderen interaktablen Gegenstände darunter gibt. Was kann ich tun, um die Navigationsschublade richtig auf den Inhalt zu haben?

  • Navigationsschublade unterhalb der Werkzeugleiste
  • Toolbar und NavigationDrawer
  • Benachrichtigung Bar ist grau nach der Implementierung Nav Drawer
  • Ersetzen Sie das Symbolleistenlayout entsprechend dem angezeigten Fragment
  • Entfernen des linken Randes von android navigation Schubladen-Symbol
  • Wie fügt man den Benachrichtigungswert für Artikel auf NavigationView für Material Design Schublade hinzu?
  • Duplizierte ID mit Fragment
  • NavigationDrawer-Aktivität ist mit Fragment-Callbacks und Anwendungs-Business-Logik verstopft
  • 5 Solutions collect form web for “Navigationsschublade – Deaktivieren Sie Klick auf Artikel hinter der Schublade”

    Set android:clickable="true" Tag auf Schiebefenster Layout.

    Das Problem scheint nicht, weil der Klick-Fokus,

    Besuchen Sie https://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout

    Die Hauptinhaltsansicht (die FrameLayout oben) muss das erste Kind im DrawerLayout sein, da die XML-Reihenfolge z-ordering impliziert und die Schublade muss oben auf dem Inhalt liegen.

    In meiner Fragmentschublade setze ich TouchListener, um True zurückzugeben. Es hat für mich gearbeitet

      mFragmentContainerView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); 

    Ich habe es anders gelöst

    Hier ist mein Code für die Einrichtung der Schublade:

     /** * Setup Navigation Drawer */ private void setDrawer() { NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer); mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar); } 

    Die setup Methode ist in meinem NavigationDrawerFragment , hier ist mein Code dafür:

     /** * Users of this fragment must call this method to set up the navigation drawer interactions. * * @param fragmentId The android:id of this fragment in its activity's layout. * @param drawerLayout The DrawerLayout containing this fragment's UI. * @param toolbar The Toolbar of the activity. */ public void setup(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) { View mFragmentContainerView = (View) getActivity().findViewById(fragmentId).getParent(); DrawerLayout mDrawerLayout = drawerLayout; //noinspection deprecation mDrawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); ActionBarDrawerToggle mActionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, "Drawer opened", "Drawer closed") { @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); if (!isAdded()) return; // Solution: // Disable click event on views below Navigation Drawer mFragmentContainerView.setClickable(false); getActivity().invalidateOptionsMenu(); } @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); if (!isAdded()) return; // Solution: // Enable click event on views below Navigation Drawer mFragmentContainerView.setClickable(true); getActivity().invalidateOptionsMenu(); } }; // Defer code dependent on restoration of previous instance state. mDrawerLayout.post(new Runnable() { @Override public void run() { mActionBarDrawerToggle.syncState(); } }); //noinspection deprecation mDrawerLayout.setDrawerListener(mActionBarDrawerToggle); } 

    Das ist es

    Nun, ich habe eine Lösung für dieses Problem gefunden. Wenn die Schublade geöffnet wird, kannst du die Navigationsleiste nach vorne bringen, indem du die bringToFront () – Methode auf das gewünschte Layout aufrufst. Dadurch wird sichergestellt, dass die Navigationsschublade bis zu einem beliebigen Inhalt bleibt, bis ein neues Element ausgewählt wurde.

    Ich:

     @Override public void onDrawerOpened(View drawerView) { activity.getActionBar().setTitle("Select content"); activity.invalidateOptionsMenu(); drawerLayout.bringToFront(); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.