2014-01-08 28 views
1

我正在使用本指南http://developer.android.com/guide/topics/ui/actionbar.html來創建應用程序並將其添加到動作欄。但是這些項目沒有顯示出來。這是menu.xml文件將動作欄添加到Android應用程序

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item android:id="@+id/action_alert" 
     android:icon="@drawable/ic_dialog_alert" 
     android:title="@string/action_alert" 
     android:showAsAction="ifRoom" /> 

<item android:id="@+id/action_settings" 
     android:title="@string/action_settings" 
     android:showAsAction="never" /> 

我已經添加了主題在清單

<application 
    android:allowBackup="true" 
    android:debuggable="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo" > 

最後,這是onCreateOptionsMenu在活動

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.activity_main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

我知道的操作欄工作很好,因爲我可以用這個沒有問題隱藏它

ActionBar actionBar = getActionBar(); 
actionBar.hide(); 

我錯過了什麼?

+0

您是否嘗試在onCreateOptionsMenu上返回true? –

+0

溢出菜單不會出現在具有硬件設置按鈕的設備上。你的情況如何? –

+0

我正在使用帶有設置按鈕的設備是 – Oscar

回答

0

當與設備硬件的設置按鈕,您的溢出按鈕移動到設置按鈕的工作,有兩個備選方案來解決這個問題:

XML:

實例化自己的溢出:

<item android:title="" 
     android:id="@+id/more" 
     android:showAsAction="always" 
     android:icon="@drawable/overflow"> 
    <menu>  
    <item android:id="@+id/action_alert" 
     android:icon="@drawable/ic_dialog_alert" 
     android:title="@string/action_alert" 
     android:showAsAction="never" /> 

    <item android:id="@+id/action_settings" 
     android:title="@string/action_settings" 
     android:showAsAction="never" /> 
    </menu> 
</item> 

的.java:

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(); 
} 
0

如果您擔心沒有顯示圖標,請嘗試changind android:showAsAction =「...」到android:showAsAction =「always」。這將明確顯示圖標。如果您支持多種屏幕分辨率,這不是一個好的解決方案。

0

XML命名空間

嘗試像下面一個自定義命名空間中的menu.xml文件。你可以用你喜歡的任何東西代替自定義。

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:custom="http://schemas.android.com/apk/res-auto" > 

然後使用,而不是Android的命名空間

<item android:id="@+id/action_alert" 
    android:icon="@drawable/ic_dialog_alert" 
    android:title="@string/action_alert" 
    custom:showAsAction="ifRoom" /> 

完成(工作)例

一個更完整的例子可以在this menu-drawer-compat-example on github找到在您的項目命名空間(相同的XML文件) 。菜單xml文件的內容有:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:hcpl="http://schemas.android.com/apk/res-auto" > 
<!-- used custom ns hcpl to force display of action buttons --> 

<item 
    android:id="@+id/action_websearch" 
    android:icon="@drawable/action_search" 
    android:showAsAction="ifRoom|withText" 
    android:title="@string/action_websearch" 
    hcpl:showAsAction="ifRoom"/> 

</menu> 

這是一個示範項目爲Android COMPAT動作條,記住這一點,如果你比較你的代碼。

相關問題