我有一个ActionBar
与它的行动项目。 点击确定项目确定之后,我想显示弹出式菜单。 我实现了这个方法,但我想它锚定在确定项目或在ActionBar
,不从布局任何观点。 如何获得某种看法,从它锚定MenuItem
?
public boolean onOptionsItemSelected(MenuItem item) {
PopupMenu popupMenu = new PopupMenu(this, ??????); // What view goes here?
popupMenu.inflate(R.menu.counters_overflow);
popupMenu.show();
// ...
return true;
}
所以,我终于找到解决办法。 当你想锚弹出菜单中动作条到ActionItem你需要找到视图呈现ActionItem。 简单的查找视图与findViewById()其中id是相同的XML格式的菜单项的ID。
DISPLAYING跳出:
public boolean onOptionsItemSelected(MenuItem item) {
// ...
View menuItemView = findViewById(R.id.menu_overflow); // SAME ID AS MENU ID
PopupMenu popupMenu = new PopupMenu(this, menuItemView);
popupMenu.inflate(R.menu.counters_overflow);
// ...
popupMenu.show();
// ...
return true;
}
菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
....
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/ic_overflow"
android:showAsAction="ifRoom"
android:title="@string/menu_overflow"/>
....
</menu>
如果菜单项是不可见的(在溢出),这是行不通的。 所以你要检查这种情况,并锚另一种观点认为findViewById返回null。
public boolean onOptionsItemSelected(MenuItem item) {
final View addView = getLayoutInflater().inflate(R.layout.add, null);
new AlertDialog.Builder(this).setTitle("Add a Word").setView(addView)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
addWord((TextView) addView.findViewById(R.id.title));
}
}).setNegativeButton("Cancel", null).show();
return (super.onOptionsItemSelected(item));
}
在这里得到充分的源代码的形式..
http://vimaltuts.com/android-tutorial-for-beginners/android-action-bar-tab-menu-example