我的情况是有不同的布局,每个布局都有一个菜单。我该怎么做?作为参考,您可以访问Youtube移动应用程序,在视频的右侧,出现3个点,点击它们,将打开一个菜单。我有屏幕截图但信用不足阻止我上传它。请帮帮我。在此先感谢。!
答案 0 :(得分:6)
请记住,您不需要为ActionBar设计布局。
只需创建一个文件@res / menu / main_activity_actions.xml,然后在ActionBar中添加要使用的项目。
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"/>
<item android:id="@+id/action_compose"
android:icon="@drawable/ic_action_compose"
android:title="@string/action_compose" />
在onCreateOptionsMenu
中夸大布局@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
处理项目的点击事件。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_search:
openSearch();
return true;
case R.id.action_compose:
composeMessage();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:2)
如用户1632209所述,您可以使用Android的菜单,但如果您想创建自己的弹出菜单,可按以下步骤操作:
PopupMenu popup = new PopupMenu(context, btnSettings); //you can use image button
// as btnSettings on your GUI after
//clicking this button pop up menu will be shown
popup.getMenuInflater().inflate(R.menu.settings_menu, popup.getMenu());
popup.setOnMenuItemClickListener(this);
popup.show();
您可以将监听器添加到菜单选项中,如:
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.option1:
//Code for option 1
break;
case R.id.option2:
//Code for option 2
break;
default:
break;
}
return false;
}
在res-&gt;菜单目录中创建settings_menu.xml,如:
<item
android:id="@+id/option1"
android:icon="@drawable/icon_for_option1"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Option 1"/>
<item
android:id="@+id/option2"
android:icon="@drawable/icon_for_option1"
android:orderInCategory="200"
android:showAsAction="never"
android:title="Option 2"/>