![](/img/trans.png)
[英]android sherlock actionbar menu selected item of menu with underline, color change
[英]android sherlock actionbar menu item going wrong
如標題所示,由於我最近在eclipse和jdk-7u76-windows-i586下安裝了android Api 22,因此操作欄出現問題。 在操作欄之前,請繼續顯示sdk版本7及更高版本的圖標。 但是現在僅在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" />
好,我終於找到答案了。 但是奇怪的是,該代碼在sdk更新之前可以正常工作:意味着此新版本的sdk對XML文件有很好的改進。 然后,最早的版本會檢測到更多錯誤。
現在如何用夏洛克動作欄菜單項解決問題?
如果您希望它適用於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),請在類Activity中使用類似的內容:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.