android sherlock actionbar菜单项出错
正如标题所示,由于我最近在eclipse和jdk-7u76-windows-i586下安装了AndroidAPI22,所以操作栏出现了问题。在操作栏之前,保持显示sdk版本7及更高版本的图标。但现在图标仅在sdk版本11及更高版本中显示,我是错过了什么还是我只是瞎了眼?以下是菜单XML文件和屏幕截图:android sherlock actionbar菜单项出错,android,eclipse,actionbarsherlock,menuitem,android-version,Android,Eclipse,Actionbarsherlock,Menuitem,Android Version,正如标题所示,由于我最近在eclipse和jdk-7u76-windows-i586下安装了AndroidAPI22,所以操作栏出现了问题。在操作栏之前,保持显示sdk版本7及更高版本的图标。但现在图标仅在sdk版本11及更高版本中显示,我是错过了什么还是我只是瞎了眼?以下是菜单XML文件和屏幕截图: <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id
<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" />
<style name="AppTheme"
parent="android:Theme.Holo.Light.DarkActionBar" />
</resources>
很好,我终于找到了答案。但奇怪的是,在sdk更新之前使用的代码可以正常工作:这意味着新版本的sdk对XML文件有很好的改进。然后,最旧版本会检测到更多错误。
<style name="AppTheme"
parent="android:Theme.Holo.Light.DarkActionBar" />
</resources>
现在如何解决夏洛克行动栏菜单项的问题?
<style name="AppTheme"
parent="android:Theme.Holo.Light.DarkActionBar" />
</resources>
- 如果您希望它适用于android api 11及更高版本(android 4.x或5.x)
只需添加以下代码:
在rsc/menu/中创建一个文件,例如:menu.xml
现在付诸表决:<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" /> </resources>
- 如果您希望它适用于AndroidAPI7到10(Android2.x到Android3.x)
在课堂活动中使用类似的方法:
<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; }
要响应单击,请使用以下内容: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; }
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" /> </resources>
并添加一个示例样式:在src/values/中:@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); }
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" /> </resources>
<?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>
@style/Widget.Styled.ActionBar @style/Widget.Styled.ActionBar @可拉拔/bg_条纹 @可拉拔/bg_条纹 @可拉伸/背景条纹分割 @可拉伸/背景条纹分割
- 如果您希望它适用于AndroidAPI7到10(Android2.x到Android3.x)
在课堂活动中使用类似的方法: