彈出效果如下圖所示
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名申請、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、潁州網(wǎng)站維護、網(wǎng)站推廣。
可以使用setGravity()方法來指定彈出窗口與anchor視圖的對齊方式,例如修改對齊方式為Gravity.END
使用起來還是比較簡單的,但是好像大部分項目的需求是PopupMenu在用戶點擊的位置彈出,然而PopupMenu并沒有提供在指定坐標(biāo)彈出的方法,所以只能咱們自己來實現(xiàn)咯!
想讓PopupMenu在指定彈出位置,首先咱們得先了解show()方法是如何讓PopupMenu彈出來的,所以只能去閱讀源碼了(Read The Fucking Source Code~)。
PopupMenu的show()方法很簡單,直接把任務(wù)轉(zhuǎn)給MenuPopupHelper來處理,處理流程:show() - tryShow() - showPopup(0, 0, false, false);
我們可以看到showPopup方法內(nèi)有兩個參數(shù)int xOffset、int yOffset,根據(jù)注釋可以知道這就是相對于anchor視圖的坐標(biāo)值。所以如果要指定PopupMenu的彈出位置,MenuPopupHelper應(yīng)該這樣處理彈出邏輯:show(int x, int y) - tryShow(int x, int y) - showPopup(x, y, true, true)。
但是由于PopupMenu無法調(diào)用到MenuPopupHelper的show(int x, int y) 方法,因此我們只能使用反射機制繞過PopupMenu,直接調(diào)用MenuPopupHelper的show(int x, int y)方法。
到此為止,已經(jīng)有了大致的解決思路,接下來看看具體實現(xiàn)。
最終彈出效果如下圖所示
底部是菜單欄,點擊就可以查看。
菜單是用戶界面中最常見的元素之一,使用非常頻繁,在Android中,菜單被分為如下三種,選項菜單(OptionsMenu)、上下文菜單(ContextMenu)和子菜單(SubMenu),以下說的是創(chuàng)建OptionsMenu。
默認樣式是在屏幕底部彈出一個菜單,這個菜單我們就叫他選項菜單OptionsMenu,一般情況下,選項菜單最多顯示2排每排3個菜單項,這些菜單項有文字有圖標(biāo),也被稱作Icon Menus,如果多于6項,從第六項開始會被隱藏,在第六項會出現(xiàn)一個More里,點擊More才出現(xiàn)第六項以及以后的菜單項,這些菜單項也被稱作Expanded Menus。
解決:
1.快捷鍵ctrl+alt+s打開settings面板,選擇keymap,如下:
2.右鍵Main menu 選項,選擇第一個“add Keyboard Shortcut”,去設(shè)置快速開啟視圖的快捷鍵,如下:
4.打開我們設(shè)置的快捷鍵,依次選擇View -- Appearance -- Main Menu,頂部菜單欄恢復(fù)了