2015-04-21 157 views
0

作爲標題提示,我得到了一個問題,因爲我最近安裝了Android Api 22在eclipse和jdk-7u76-windows-i586下的動作吧。動作之前Bar保持顯示帶有sdk版本7和更高版本的圖標。但現在與SDK版本只顯示圖標11和更高的,我錯過了什麼或者我只是盲目的?這裏是菜單的XML文件以及相關截屏:android sherlock actionbar菜單項出錯

<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

好,我終於找到答案。但奇怪的是,代碼在sdk更新之前使用:意味着這個更新版本的sdk對XML文件有了很大的改進。然後由最舊的版本檢測到更多錯誤。
現在如何解決sherlock action Bar菜單項的問題?

  • ,如果你希望它爲Android API 11及更高版本(安卓4.x或5.x的) 只需添加這段代碼工作:
    RSC /菜單創建文件/例如: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 /值/:

    <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(安卓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 /價值/

    <?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>