我正在尝试创建这种列表菜单,但没有成功:
我想使用Android菜单按钮或按下带有“打开”或“关闭”文字的箭头。 该菜单将显示一个选项列表:
但是,我有这样的结果,一个菜单作为块选项:
我正在使用Android开发者网站上的代码:
XML文件(/menu/gallerie_menu.xml):
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/open_or_close"
android:icon="@drawable/ic_open"
android:title="@string/open"
android:showAsAction="ifRoom"/>
<item android:id="@+id/take_pic"
android:icon="@drawable/ic_camera"
android:title="@string/take_picture" />
<item android:id="@+id/import_pic"
android:icon="@drawable/ic_import"
android:title="@string/import_picture" />
<item android:id="@+id/delete"
android:icon="@drawable/ic_delete"
android:title="@string/delete_picture" />
</menu>
Java代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.gallerie_menu, menu);
return true;
}
有人可以告诉我或向我推荐一些东西吗?
答案 0 :(得分:1)
我能建议的唯一选择并不是特别简单。
如果您在活动中声明了PopupWindow变量:
private PopupWindow myMenu;
然后在该活动设置的OnCreate中,您的菜单窗口会扩展布局xml文件,这是您希望菜单查看的方式,并将事件处理程序添加为necissary:
View v = getLayoutInflater().inflate(R.layout.test_menu, null, false);
Button b = (Button)v.findViewById(R.id.myFirstMenuOption);
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//do something....
}
});//repeat for rest off menu buttons.
myMenu = new PopupWindow(v, 0, 0, false);
myMenu.setWidth(LayoutParams.MATCH_PARENT);
myMenu.setHeight(LayoutParams.WRAP_CONTENT);
然后覆盖活动的onKeyDown方法以显示响应按下按钮的菜单:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_MENU)
{
if (myMenu.isShowing())
{
myMenu.dismiss();
}
else
{
ScrollView sv = (ScrollView)findViewById(R.id.mainLayout);
myMenu.showAtLocation(sv, android.view.Gravity.BOTTOM | android.view.Gravity.LEFT, 0, 0);
}
return true; //swallow the event
}
return super.onKeyDown(keyCode, event);
}
这里的ScrollView是我活动布局xml中最顶层的视图。
此处有各种选项,例如编写自己的可重复使用的PopupWindow类,但如果您选择使用此选项,我会留给您。
希望这会对你有所帮助。