Подтвердить что ты не робот

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

Я устанавливаю actionLayout на элемент меню и устанавливаю цвет фона и изображение, но это не соблюдается. в моей деятельности я:

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

my 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

4b9b3361

Ответ 1

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

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

Ответ 2

при использовании Appcompact, пункт меню будет выглядеть как

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

Ответ 3

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

      app:showAsAction="ifRoom|collapseActionView"

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

Ответ 4

использовать пространство имен приложения вместо 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>