it-swarm.com.ru

actionlayout на menuitem ничего не делает

я устанавливаю 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

52
tipu

Попробуйте app:actionLayout="@layout/check" вместо Android:actionLayout="@layout/check".

Если вы используете ActionbarSherlock или AppCompat, пространство имен Android: не будет работать для MenuItems. Это связано с тем, что в этих библиотеках используются настраиваемые атрибуты, имитирующие API Android, поскольку они не существовали в более ранних версиях платформы.

211
Ben Harris

при использовании Appcompact пункт меню будет похож

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

Ответ Бена Харриса абсолютно правильный. Однако в некоторых случаях, например, при использовании таких атрибутов, как:

      app:showAsAction="ifRoom|collapseActionView"

используемый в SearchView (в моем случае), вид макета не отображается, и это вызывает у меня много головной боли. Похоже, collapseActionView не поддерживается с представлением действий в appcombat. Так что учитывайте это и во время работы.

5
neaGaze