2016-02-02 499 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);