我有一个动作条
与它的行动项目。点击确定项目确定之后,我想显示弹出式菜单。
我实现了这个方法,但我想它固定到行动项目,或到动作条
,不从布局的任何视图。如何获得某种观点,从菜单项
?
公共布尔onOptionsItemSelected(菜单项项){
PopupMenu的弹出菜单=新的PopupMenu的(这一点,??????); //去什么看法吗?
popupMenu.inflate(R.menu.counters_overflow);
popupMenu.show();
// ...
返回true;
}
解决方案
所以,最后我找到解决办法。当你想固定弹出菜单中的动作条为ActionItem你需要找到视图呈现ActionItem。 简单的查找视图findViewById()其中id是相同的XML的菜单项的ID。
DISPLAYING弹出:
公共布尔onOptionsItemSelected(菜单项项){
// ...
查看menuItemView = findViewById(R.id.menu_overflow); //相同的ID菜单ID
PopupMenu的弹出菜单=新的PopupMenu的(这一点,menuItemView);
popupMenu.inflate(R.menu.counters_overflow);
// ...
popupMenu.show();
// ...
返回true;
}
MENU:
< XML版本=1.0编码=UTF-8&GT?;
<菜单的xmlns:机器人=http://schemas.android.com/apk/res/android>
....
<项目
机器人:ID =@ + ID / menu_overflow
机器人:图标=@可绘制/ ic_overflow
机器人:showAsAction =ifRoom
机器人:标题=@字符串/ menu_overflow/>
....
< /菜单>
如果菜单项是不可见的(是溢出),这是行不通的。所以你要检查这种情况,并锚定到其他视图findViewById返回null。
I have an ActionBar
with an action item on it. After clicking on the action item, I want to show a popup menu.
I implemented this method, but I want to anchor it to the action item or to the ActionBar
, not to any view from layout. How to get some kind of view to anchor it from 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;
}
解决方案
So finally I found solution. When you want to anchor popupmenu to ActionItem in ActionBar you need to find view that renders ActionItem. Simple find view with findViewById() where id is same as id of your menu item in xml.
DISPLAYING POPUP:
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;
}
MENU:
<?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>
If menu item is not visible (is in overflow) it does not work. findViewById returns null so you have to check for this situation and anchor to another view.
上一篇:Android的:如何获得自定义视图的高度和宽度?自定义、视图、宽度、如何获得
下一篇:不正确协调从getLocationOnScreen将/ getLocationInWindow不正确、getLocationOnScreen、getLocationInWindow