je mets un actionLayout sur un élément de menu et je mets la couleur et l'image d'arrière-plan, mais ce n'est pas respecté. dans mon activité, j'ai:
getMenuInflater().inflate(R.menu.submit_action, menu);
mon submit_action est:
<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>
ma disposition de chèque est
<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>
mais même avec toute cette configuration, voici comment la barre d'action apparaît, ne montrant pas du tout mon menu (mais il est là, car il répond au clic, mais n'apparaît pas):
Essayez app:actionLayout="@layout/check"
au lieu de Android:actionLayout="@layout/check"
.
Si vous utilisez ActionbarSherlock
ou AppCompat
, le Android:
l'espace de noms ne fonctionnera pas pour MenuItem
s. Cela est dû au fait que ces bibliothèques utilisent des attributs personnalisés qui imitent les API Android, car ils n'existaient pas dans les versions antérieures du cadre.
lors de l'utilisation d'Appcompact, l'élément de menu sera comme
<item Android:id="@+id/cart"
app:actionLayout="@layout/actionbar_cart"
Android:title="@string/action_cart"
app:showAsAction="always"
/>
La réponse de Ben Harris est absolument correcte. Cependant, dans certains cas, comme lors de l'utilisation d'attributs tels que:
app:showAsAction="ifRoom|collapseActionView"
utilisé dans SearchView (dans mon cas), la vue de mise en page n'est pas affichée et cela m'a causé beaucoup de maux de tête. Il semble que collapseActionView ne soit pas pris en charge avec la vue d'action dans appcombat. Considérez donc cela également lorsque vous faites vos affaires.
utilisez l'espace de noms de l'application au lieu de Android et cela fonctionnera bien.
<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>