首页 > 代码库 > 在ActionBar中,即便设置showAsAction="always",items仍然在overflow中显示的问题

在ActionBar中,即便设置showAsAction="always",items仍然在overflow中显示的问题

今天很是苦恼,明明设置了android:showAsAction="always",但是所有的items全部都显示在overflow中,然后在官网发现了答案。

如果你为了兼容 Android 2.1 的版本使用了 Support 库,在 android 命名空间下showAsAction 属性是不可用的。Support 库会提供替代它的属性,你必须声明自己的 XML 命名空间,并且使用该命名空间作为属性前缀。(一个自定义 XML 命名空间需要以你的 app 名称为基础,但是可以取任何你想要的名称,它的作用域仅仅在你声明的文件之内。)

添加此命名空间 xmlns:app="http://schemas.android.com/apk/res-auto" ,使用app:showAsAction代替android:showAsAction。

例如:

 1 <?xml version="1.0" encoding="utf-8"?> 2 <menu xmlns:android="http://schemas.android.com/apk/res/android"  3     xmlns:app="http://schemas.android.com/apk/res-auto"  4     > 5  6     <item 7         android:id="@+id/action_search" 8         android:icon="@drawable/peasy" 9         app:showAsAction="always"10         android:title="@string/action_search"/>11     12     <!-- 设置, 在溢出菜单中展示 -->13     <item14         android:id="@+id/action_settings"15         android:showAsAction="never"16         android:title="@string/action_settings"/>17     <item18         android:id="@+id/action_about"19         app:showAsAction="never"20         android:title="@string/action_about"/>21 22 </menu>

UI依然很丑,但是效果实现了,大家将就着看吧。

技术分享

在ActionBar中,即便设置showAsAction="always",items仍然在overflow中显示的问题