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]()
Ответы
Ответ 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>