我使用自定义操作栏主题(实际上只是更改了颜色)并禁用主页图标(在主要活动中)。我有2个菜单项,我想要充气,并且“始终”在操作栏上。当我运行应用程序时,它们都被推入溢出状态。
我提到了这篇文章here并开始使用自定义命名空间,因为支持v7并且结果仍然相同。我想知道我使用自定义操作栏主题是否与它有关?
这是我的main_activity_actions.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Velo="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/add_ride"
android:title="@string/add_ride"
android:icon="@drawable/ic_action_new"
Velo:showAsAction="ifRoom"
/>
<item android:id="@+id/action_settings"
android:title="Settings"
android:icon="@drawable/ic_action_overflow"
Velo:showAsAction="ifRoom" />
</menu>
这是通常的样板充气器
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
不确定你们是否想看到其他任何东西,但请告诉我。
提前致谢
编辑:这很奇怪。我可以使用android:showAsAction="ifRoom"
并在其上得到一个错误(下面的红线),然后忽略它并运行它可以按我想要的方式工作,但是如果我使用命名空间appname:showAsAction="ifRoom"
它就不会工作。我的意思是我想以正确的方式做到这一点,但忽略这个错误是什么伤害?
答案 0 :(得分:0)
如果您使用的是FragmentActivity
,那么您没有使用AppCompat v7,它提供了API 7及更高版本的一致ActionBar。您可以继续使用android:showAsAction="ifRoom"
并使用FragmentActivity
,但您的菜单项只会显示在API 11或更高版本的设备上的操作栏中(这是ActionBar成为Android内置部分的时候)
另一种方法是切换到使用AppCompat(关于最新版本的blog post,v21,可能有助于阅读)并使用其ActionBarActivity
。这将为您在API 11,API 11-20和API 21之前提供一致的操作栏体验(因为API 21在Action Bar的工作方式上发生了很大变化)。
答案 1 :(得分:0)
来自FragmentActivity
文档:
注意:如果要实施包含操作的活动 另外,你应该使用ActionBarActivity类,这是一个 这个的子类,因此允许您在API级别上使用Fragment API 7岁及以上。
由于您希望自己的活动拥有一个ActionBar并且您说要获得v7支持,因此请扩展ActionBarActivity
。然后,您需要使用AppCompat
主题。
如果您想使用AppCompat
以外的基本主题,则必须延长Activity
并将minSdk更改为11或更高。
基本上,为了支持API 7,您需要坚持支持包中的AppCompat
主题。