Comment faire pour que la barre d'action Action contextuelle recouvre la barre d'outils appcompat-v7 mais pas le tiroir de navigation?

J'ai une activité avec une barre d'application et un tiroir de navigation. La barre d'application est implémentée à l'aide de la nouvelle classe de la barre d'outils à partir de la version 21. + de la bibliothèque appcompat-v7, et le tiroir de navigation s'affiche devant elle.

L'activité contient une vue de liste avec des éléments pouvant être sélectionnés, de sorte que je présente une barre d'action contextuelle (CAB). Il commence par appeler:

  • Android: Appcompat 21 comment ajouter des ombres sur la barre d'action
  • Alpha / Beta apk publishing fonctionne-t-elle une application non publiée dans Google Play?
  • Java.lang.SecurityException:! @Too plusieurs alarmes (500) enregistrées à partir de pid 10790 uid 10206
  • ORM sur Android SQLite et système de base de données
  • Devrait utiliser "sp" au lieu de "dp" pour les tailles de texte
  • Android: Puis-je activer le GPS sans redirection de l'utilisateur vers l'écran de configuration comme dans l'application "google maps"
  • ActionBarActivity.startSupportActionMode(android.support.v7.view.ActionMode.Callback callback) 

    Par défaut, le CAB est inséré au-dessus de la barre d'outils au lieu de la superposer; Il semble que le CAB ne couvrira que la vraie ActionBar par défaut. Comme le montre cette réponse , le CAB recouvre correctement la barre d'outils lorsque cette propriété de thème est définie:

     <item name="windowActionModeOverlay">true</item> 

    Mais cela permet également à l'CAB de superposer le tiroir de navigation, ce qui est incorrect selon les spécifications de conception de matériaux . Les principaux modèles de conception Android recommandent toujours de cacher l'CAB lorsque le tiroir de navigation est ouvert et le s'affiche à nouveau lorsqu'il est fermé, ce qui pourrait être fait pour "réparer" le problème, mais cela ne devrait pas être nécessaire. Comme il est écrit, les spécifications de conception de matériaux ne précisent pas que le CAB doit être caché lorsque le tiroir du nav s'ouvre et que le tiroir du nav devrait s'ouvrir sur le CAB, cacher le CAB serait en fait une distraction visuelle.

    Existe-t-il un moyen d'afficher le tiroir de navigation en face de l'ACR tout en la portant sur la barre d'outils?

  • Erreur Android No, minSdk (API 19)> deviceSdk (API 1)
  • Arrêt / destruction d'un fil
  • ViewPager wrap_content ne fonctionne pas
  • Refus d'autorisation: non autorisé à envoyer une diffusion dans Android
  • L'impression par l'intermédiaire de l'exemple web devrait
  • PutExtra () dans Android
  • One Solution collect form web for “Comment faire pour que la barre d'action Action contextuelle recouvre la barre d'outils appcompat-v7 mais pas le tiroir de navigation?”

    Je pourrais avoir trouvé une solution – ou peut-être une solution de contournement simple.
    J'ai eu le même problème même avec un ListFragment, quand startActionMode() été utilisé à la place du setChoiceMode() . J'ai donc examiné le code ListFragment et j'ai trouvé que startActionMode() n'est pas appelé sur l'activité, mais plutôt sur son ListView, donc j'ai essayé d'utiliser une vue. Dans mon code maintenant, il semble fonctionner comme prévu en utilisant soit le fragment ListView:

     ActionMode mActionMode = getListView().startActionMode(this); 

    Ou en utilisant le conteneur d'activité qui contient mon fragment:

     View aView = getActivity().findViewById(R.id.container); ActionMode mActionMode = aView.startActionMode(this); 

    Aussi:

    • Maintenant, le bouton de retour détruit le mode d'action avant qu'il ne l'ait fait
    • L'ACR couvre maintenant correctement la barre d'action, tout en utilisant windowActionModeOverlay dans mon style ne couvrait qu'une partie de celle-ci – du moins dans mon cas
    • L'icône CAB est une flèche arrière plutôt qu'une tic – pas sûr de ce que cela signifie bien

    Pour être honnête, je ne suis pas sûr des raisons de cela, alors je ne suis pas sûr de la sécurité de ces solutions, mais pour l'instant semble fonctionner correctement.
    Si quelqu'un a une meilleure compréhension, n'hésitez pas à commenter ou modifier.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.