2014-11-02 63 views
0

我已經開發了包含在我的動作條的菜單圖標的應用程序,我創建了以下菜單:Android的動作條菜單圖標

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 
    return true; 
} 

,這裏是爲onOptionsItemSelected代碼:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.menu_home: 
     startActivity(new Intent(this, MainActivity.class)); 
     return true; 
    case R.id.menu_adv_search: 
     startActivity(new Intent(this, AdvSearchActivity.class)); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

使用我的智能手機菜單圖標在那裏(使用LG手機),但是當我在我的平板電腦(Galaxy Tab 8)上測試它時,菜單圖標消失了,但功能仍然存在。按下底部的菜單軟按鈕,彈出窗口出現,但頂部操作欄中沒有圖標。如何解決它?有任何想法嗎?

回答

0

在帶有硬件菜單按鈕的設備上(例如Galaxy系列的三星),溢出菜單的行爲與'傳統'菜單一樣,通過使用硬件菜單按鈕。

請使用以下屬性爲每個菜單項的

android:showAsAction="always" 

如果你正在使用actionbarcompat包,然後替換上面屬性使用以下

app:showAsAction="always" 

不要忘記添加以下namespace aswell

xmlns:app="http://schemas.android.com/apk/res-auto" 
+0

謝謝山姆你的迴應,經過多一點搜索後,我發現,正如你所提到的菜單按鈕硬件提供的設備,它將無法正常工作,雖然使行動showAsAction =「總是」會顯示項目本身而不是菜單圖標,但我發現這個鏈接的解決方案:http://stackoverflow.com/questions/9739498/android-action-bar-not-showing-overflow – 2014-11-02 08:55:53

0

正如我發現,在菜單按鈕的設備上hardwa重新提供,菜單圖標將被隱藏,使菜單項showAsAction =「always」不會將菜單圖標帶回我的問題中,因爲我找到了解決方案Here

並且這裏是代碼中,我從上面的鏈接來克服這個問題,使用(如果它可以被稱爲一個問題):

private void getOverflowMenu() { 

    try { 
     ViewConfiguration config = ViewConfiguration.get(this); 
     Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 
     if(menuKeyField != null) { 
      menuKeyField.setAccessible(true); 
      menuKeyField.setBoolean(config, false); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

你可以把這個功能您的活動或基本活動,並呼籲它在你的onCreate功能它會爲你做所有的魔術。