2016-02-02 500 views
3

创建“简单的菜单”根据这一http://www.google.com/design/spec/components/menus.html#menus-simple-menus,与始发行的垂直中心对齐第一个菜单项,如: first popup menu vertically aligns with item根据材质设计规范

我试图创建此菜单一个ListView项目点击这样的:

@Override 
public void onListItemClick(ListView l, View v, final int position, long id) { 
    PopupMenu popup = new PopupMenu(getContext(), v, Gravity.CENTER_HORIZONTAL); 
    popup.getMenuInflater().inflate(R.menu.bus_line_popup, popup.getMenu()); 
    popup.setOnMenuItemClickListener(...); 
    popup.show(); 
} 

不过菜单则不会出现正确,并根据该规范: popup menu does not appear centered

如何使菜单完全按要求显示?

+0

描述的直列效果可能要编辑的李NK到:http://www.google.com/design/spec/components/menus.html#menus-simple-menus – Mohsen

+0

@ LinX64谢谢 –

+0

没问题,我做它一点点的搜索,请参阅:HTTPS: //github.com/codepath/android_guides/wiki/Menus-and-Popups#popup-window我认为你是对的,听起来像一个把戏做到这一点。 – Mohsen

回答

2

我确实有点搜索,请参阅:http://developer.android.com/reference/android/widget/PopupMenu.html

一个PopupMenu显示一个Menu在锚定到 查看一个模式弹出窗口。如果没有,或 ,如果不存在,则弹出窗口将出现,位于标注查看以下。如果IME可见,则弹出框不会重叠,直到它被触摸。触摸弹出框的外部将 解雇它。

由于doc说,这似乎是正常的如果还有空间,它会显示视图(像你的情况)以下,且如果没有roow,它会显示视图上方。

+1

这个问题最终可能是无效的。Material Spec中显示的PopupMenu用于选项选择(排序选项菜单),但PopupMenu本身就是..弹出式菜单。 Google在错误跟踪器中的回答是正确的,因为该组件起作用。我会接受你的答案,因为它概述了'PopupMenu'功能。 –

0

这实际上是可能的:

<style name="MyPopupMenu" parent="@style/Widget.AppCompat.PopupMenu.Overflow"> 
    <item name="android:dropDownHorizontalOffset">12dp</item> 
</style> 

PopupMenu pm = new PopupMenu(context, view, 0, 0, R.style.MyPopupMenu);