正如标题所暗示的那样,由于我最近在eclipse和jdk-7u76-windows-i586下安装了Android Api 22,因此我遇到了操作栏的问题。在操作之前,Bar会继续显示带有sdk 7及更高版本的图标。但是现在icon只显示sdk版本11及更高版本,我错过了什么或者我只是盲目吗?这里是菜单XML文件和屏幕截图:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/share"
android:icon="@drawable/ic_action_add_group"
android:title="share info"
android:showAsAction="ifRoom" />
答案 0 :(得分:0)
好,我终于找到了答案。但奇怪的是代码用于在sdk更新之前工作:意味着这个较新版本的sdk对XML文件有很好的改进。然后,最旧版本会检测到更多错误 现在如何用sherlock动作栏菜单项解决问题?
如果你想让它适用于android api 11及更高版本(Android 4.x或5.x)
只需添加这段代码:
在 rsc / menu / 中创建一个文件,例如:menu.xml
现在放:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:id="@+id/send"
android:title="@string/Send"
android:icon="@drawable/ic_action_new_event"
android:showAsAction="ifRoom"
/>
</menu>
并添加样本样式:在rsc / values /中:
<style name="AppTheme"
parent="android:Theme.Holo.Light.DarkActionBar" />
</resources>
这在您的活动中:
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.men, menu);
return true;
}
如果你想让它适用于android api 7到10(Android 2.x到Android 3.x) 在课堂上使用类似这样的东西活动:
THEME == R.style.Theme_Sherlock_Light;
@Override
public boolean onCreateOptionsMenu(Menu menu){
boolean isLight = THEME == R.style.Theme_Sherlock_Light;
menu.add(R.string.Send)
.setIcon(isLight ? R.drawable.ic_action_group :
R.drawable.ic_action_person)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(R.id.get)
.setIcon(isLight ?
R.drawable.ic_action_chat:
R.drawable.ic_action_chat)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |
MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add("Refresh")
.setIcon(isLight ? R.drawable.ic_action_time :
R.drawable.ic_action_volume_on)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |
MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
要响应点击,请使用以下内容:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.toString()==getString(R.string.Send)) {
Toast.makeText(MainActivity.this, "Got click: " + item,
Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
并添加样本样式: src / values / :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Styled"
parent="Theme.Sherlock.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item
name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="Widget.Styled.ActionBar"
parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/bg_striped</item>
<item name="android:background">@drawable/bg_striped</item>
<item name="backgroundSplit">@drawable/bg_striped_split</item>
<item
name="android:backgroundSplit">@drawable/bg_striped_split</item>
</style>
</resources>