作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我的应用程序不使用 Action Bar,有谁知道当当前设备没有硬件菜单按钮时我如何显示 3 点选项菜单?我见过类似下面的代码 fragment ,但它是用于 Action Bar 的,对吗?
<!-- list_menu.xml -->
?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_item_1"
android:title="@string/menu_string_1"
android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_item_1"
android:title="@string/menu_string_2"
android:showAsAction="ifRoom|withText"/>
</menu>
在 onCreateOptionsMenu
中:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.list_menu, menu);
return true;
}
谢谢!
最佳答案
澄清一下:您不希望在您的应用中使用操作栏。如果设备有硬件菜单按钮,您不想显示溢出图标(三个点)。如果设备没有硬件菜单按钮,您希望显示单独的溢出,对吧?
您可以检查硬件菜单按钮
ViewConfiguration.get(getApplicationContext()).hasPermanentMenuKey();
您可以使用以下代码为该按钮设置一个监听器:
@Override
public boolean onKeyDown(int keycode, KeyEvent e) {
switch(keycode) {
case KeyEvent.KEYCODE_MENU:
doSomething();
return true;
}
return super.onKeyDown(keycode, e);
}
如果设备没有硬件菜单按钮也没关系,因此您可以在任何情况下插入此方法。
处理手机有按钮的情况。如果它没有硬件按钮,您必须以编程方式在 Activity 的 onCreate() 方法中添加一个。所以你会在 onCreate() 中写这样的东西:
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout);
if(!ViewConfiguration.get(getApplicationContext()).hasPermanentMenuKey()) {
Button overflowButton = new Button(this);
// Add further parameters to the button
// Especially the position (upper right) and the icon (overflow)
layout.addView(overflowButton );
}
溢出图标可以在这里下载: https://developer.android.com/design/downloads/index.html(它在操作栏图标包中)。
希望这有帮助:)
关于android - 如何在不使用 Action Bar 的情况下显示三点菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22836255/
我是一名优秀的程序员,十分优秀!