web-dev-qa-db-fra.com

Barre d'action non affichée avec AppCompat

Je rétroporte mon application vers API7 avec AppCompat et j'ai un problème avec la barre d'actions.

Lorsque j'utilise FragmentActivity, la barre d'action est affichée sur mon téléphone (API18), mais avec ActionBarActivity elle apparaît comme le menu d'options en appuyant sur le bouton de menu.

Sur l'émulateur avec API7, la barre d'action est toujours affichée comme un menu d'options.

Des idées?

33
electrofant

Utilisez l'espace de nom compat pour vos éléments de menu comme celui-ci:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
  xmlns:compat="http://schemas.Android.com/apk/res-auto" >
    <item Android:id="@+id/action_whatever"
      Android:icon="@drawable/ic_action_whatever"
      Android:title="@string/whatever"
      compat:showAsAction="ifRoom"  />
</menu>
70
flx

Lié à n doublon qui pointe vers ce post , j'ai eu du mal à faire apparaître mes boutons comme des éléments d'action au lieu d'éléments de débordement, malgré le fait que showAsAction soit défini sur always. J'ai réussi à le contraindre en étendant mon activité avec Activity au lieu de ActionBarActivity. Selon cette réponse , cela est acceptable si vous n'avez pas besoin de prendre en charge les niveaux d'API inférieurs à 11.

...extends ActionBarActivity:

extends ActionBarActivity

...extends Activity:

enter image description here

6
adamdport

Je débogue avec Doogee Valencia Y100Pro, et le menu comme "trois petits carrés" n'est pas visible, mais quand j'ai étendu mon MainActivity avec Android.support.v7.app.ActionBarActivity, puis j'obtiens le menu texte/icône dans la barre d'actions. Suivant capture d'écran et menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" xmlns:app="http://schemas.Android.com/apk/res-auto">
    <item
        Android:id="@+id/action_update"
        Android:icon="@drawable/ic_refresh"
        Android:title="@string/action_update"
        app:showAsAction="always"/>
    <item Android:id="@+id/action_settings"
        Android:title="@string/action_settings"
        app:showAsAction="ifRoom"/>
</menu>
0
Ivan Osipov