web-dev-qa-db-ja.com

menuitemのactionlayoutは何もしません

メニュー項目にactionLayoutを設定し、背景色と画像を設定していますが、尊重されていません。私の活動では、私が持っている:

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

私の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>

私の小切手レイアウトは

<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>

しかし、このセットアップのすべてでさえ、これはアクションバーがどのように表示されるかであり、私のメニューアイテムはまったく表示されません(しかし、クリックに反応するが表示されないため、そこにあります):

enter image description here

55
tipu

app:actionLayout="@layout/check" の代わりに Android:actionLayout="@layout/check"

ActionbarSherlockまたはAppCompatを使用している場合、Android:名前空間はMenuItemsでは機能しません。これは、これらのライブラリがフレームワークの以前のバージョンには存在しなかったため、Android APIを模倣するカスタム属性を使用するためです。

216
Ben Harris

appcompactを使用すると、メニュー項目は次のようになります

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

ベン・ハリスからの答えは絶対に正しいです。ただし、次のような属性を使用する場合のような場合があります。

      app:showAsAction="ifRoom|collapseActionView"

searchView(私の場合)で使用すると、レイアウトビューが表示されないため、頭痛の種になりました。 collapseActionViewはappcombatのアクションビューではサポートされていないようです。だからあなたのことをやっている間にこれも考慮してください。

5
neaGaze

Androidの代わりにアプリの名前空間を使用すると、正常に機能します。

<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>
0
coding.cat3