2014-01-08 29 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动作条,记住这一点,如果你比较你的代码。

相关问题