actionlayout su menuitem non fa nulla

sto impostando un actionLayout su una voce di menu e l’impostazione del colore di sfondo e l’immagine, ma non è rispettato. nella mia attività ho:

getMenuInflater().inflate(R.menu.submit_action, menu);

mio submit_action è:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_submit"
        android:actionLayout="@layout/check"
        app:showAsAction="always"  />
</menu>

controllare il mio layout è

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/actionButtonStyle"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#e8e8e8"
    android:clickable="true"
    android:contentDescription="lol" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@null"
        android:scaleType="centerInside"
        android:src="@drawable/ic_action_tick" />

</RelativeLayout>

ma anche con tutto questo, l’installazione, questo è come l’azione viene visualizzata la barra non mostrare il mio menuitem (ma c’è, perché risponde al click, ma non viene visualizzato):

actionlayout su menuitem non fa nulla

InformationsquelleAutor tipu | 2014-04-22



4 Replies
  1. 216

    Provare app:actionLayout="@layout/check" invece di android:actionLayout="@layout/check".

    Se si utilizza ActionbarSherlock o AppCompat, il android: spazio dei nomi non lavoro per MenuItems. Questo è perché queste librerie utilizzo di attributi personalizzati che imitano le Api di Android dato che non erano presenti nelle versioni precedenti del framework.

    • E da app:actionLayout si intende il nome del pacchetto di app. Quindi, se la vostra applicazione nome del pacchetto è di twitter sarebbe twitter:actionLayout.
    • è possibile utilizzare qualsiasi cosa che si desidera. Il valore predefinito è di usare “app”
    • No, l’app è definita all’interno dello spazio dei nomi XML. Esso si riferisce alle applicazioni librerie di compatibilità. Se l’applicazione non riesce a risolvere, incollare xmlns:app=”schemas.android.com/apk/res-auto” nella tua <xml> tag.(Sì, vecchio commento, mettendo più informazioni qui per aiutare coloro che potrebbero google).
    • Non dimenticare di cambiare il supporto della libreria 23.1.0 Altrimenti il menu xml consente di utilizzare actionlayout e non si lamentano, ma non funziona. compile 'com.android.support:support-v4:23.1.0'
  2. 7

    quando si utilizza Appcompact ,voce di menu sarà come

    <item android:id="@+id/cart"
        app:actionLayout="@layout/actionbar_cart"
        android:title="@string/action_cart"
        app:showAsAction="always"
     />

  3. 5

    La risposta da Ben Harris è assolutamente corretto. Tuttavia, in alcuni casi, come quando si usano gli attributi come:

          app:showAsAction="ifRoom|collapseActionView"

    utilizzato in SearchView (nel mio caso), la vista layout non è dimostrato e che ha causato un sacco di mal di testa per me. Sembra che collapseActionView non è supportato con l’azione vista in appcombat. Quindi, considerare questo come bene mentre si fa la tua roba.

  4. 0

    utilizzare app namespace invece di android e funziona benissimo.

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item android:id="@+id/action_submit"
            app:actionLayout="@layout/check"
            app:showAsAction="always"  />
    </menu>

Lascia un commento