我正在编写一个Android应用程序,我试图向ActionBar显示溢出菜单项
使用这个很棒的教程链接:http://wptrafficanalyzer.in/blog/adding-action-items-and-overflow-menu-items-to-action-bar-in-android/
问题:
Not getting Overflow Menu Items (Icon)
请参阅下面的屏幕截图以获得更清晰:
的Manifest.xml:
<uses-sdk android:minSdkVersion="14" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:uiOptions="splitActionBarWhenNarrow"
>
items.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/phone"
android:title="@string/phone"
android:icon="@drawable/phone"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/computer"
android:title="@string/computer"
android:icon="@drawable/computer"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/gamepad"
android:title="@string/gamepad"
android:icon="@drawable/gamepad"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/camera"
android:title="@string/camera"
android:icon="@drawable/camera"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/video"
android:title="@string/video"
android:icon="@drawable/video"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/email"
android:title="@string/email"
android:icon="@drawable/email"
android:showAsAction="ifRoom|withText"
/>
</menu>
我正在使用本教程,并尝试使用图6:拆分操作栏中的操作项和溢出菜单
请帮我向ActionBar显示溢出菜单项(ICON)
现在每当我点击模拟器中的菜单按钮,我就会得到其余的菜单项 ....
答案 0 :(得分:57)
只是说如果您的设备有一个菜单按钮,溢出图标将不会显示,在较新的手机上将显示溢出按钮。我不会推荐ASMUIRTI的回答,因为这是一个非常糟糕的黑客攻击,它破坏了平台上其他应用程序的一致性。
你必须使用
android:showAsAction="never"
让Android设备决定该设备是否需要溢出菜单。
答案 1 :(得分:47)
要向Action Bar显示三个点图标,只需在OnCreate()中使用以下方法:
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();
}
}
答案 2 :(得分:12)
这可能是另一项工作,这对我有帮助。保留一个可绘制的三个点并将其作为菜单项。
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/saveDetails"
android:showAsAction="always"
android:title="@string/save"/>
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/dts"
android:orderInCategory="11111"
android:showAsAction="always">
<menu>
<item
android:id="@+id/contacts"
android:showAsAction="never"
android:title="Contacts"/>
<item
android:id="@+id/service_Tasks"
android:showAsAction="never"
android:title="Service Tasks"/>
<item
android:id="@+id/charge_summary"
android:showAsAction="never"
android:title="Charge Summary"/>
<item
android:id="@+id/capture_signature"
android:showAsAction="never"
android:title="Capture Signature"/>
</menu>
</item>
</menu>
答案 3 :(得分:1)
如果我正确理解了您的问题,并且您想要在操作栏上显示所有图标,请在菜单项中更改此参数
android:showAsAction="ifRoom|withText"
到这个
android:showAsAction="always"
答案 4 :(得分:1)
如果您使用支持库,为了在操作栏中显示菜单项,您必须使用xml中的以下语法:
yourappname:showAsAction="ifRoom|withText"
答案 5 :(得分:0)
具有菜单硬件按钮的手机在点击硬件按钮时显示额外的菜单项。较新的手机没有硬件菜单按钮会自动将“溢出”菜单图标添加到操作栏。 额外的菜单项是“showAsAction”属性设置为never的那些。
答案 6 :(得分:0)
在AndroidManifest.xml之间添加
android:theme="@android:style/Theme.Holo.Light"
在应用程序中添加操作栏。
之后,转到menu.xml并添加以下内容
xmlns:tools="http://schemas.android.com/tools
之间 最后在每个项目中添加
android:showAsAction="always"
tools:ignore="AppCompatResource"