簡體   English   中英

Android Sherlock Actionbar菜單項出現錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM