[英]Popup Menu shows at left bottom of the screen
這個問題以前在這里問過。 我按照答案中的步驟操作,但沒有用。
我在片段中有一個按鈕。 我想在單擊該按鈕時顯示一個彈出菜單。 我嘗試了很多方法,但彈出菜單一直顯示在屏幕的左下角。
這是彈出菜單方法:
public void showPopup(View v) {
//added library level 25
//may conflict with later updates
PopupMenu popup = new PopupMenu(getContext(), v, Gravity.END);
popup.setGravity(Gravity.END);
MenuInflater menuInflater = popup.getMenuInflater();
menuInflater.inflate(R.menu.menu_home_fragment, popup.getMenu());
//handling items of the popup menu:
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
//no inspection Simplifiable If Statement
if (id == R.id.menu_about_app) {
//startActivity(new Intent(MainActivity.this, AboutDietCornerActivity.class));
}
if (id == R.id.menu_rate_app) {
Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.techdroidltd.dietcorner"));
startActivity(i);
}
if (id == R.id.menu_user_ideas) {
//startActivity(new Intent(MainActivity.this, UserIdeasActivity.class));
}
if (id == R.id.menu_privacy_policy) {
//startActivity(new Intent(MainActivity.this, PrivacyPolicyActivity.class));
}
return false;
}
});
//end of handling items .. then show popup:
popup.show();
}
然后我在片段的 onCreateView 中創建了一個按鈕來調用該方法:
mainMenuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopup(getView());
}
});
彈出菜單顯示並運行良好。 無論我如何改變它的重力,它都顯示在錯誤的地方的問題。 請幫忙。
只是參考文檔,彈出菜單視圖總是錨定到視圖,它會彈出/出現在錨定視圖的下方或上方。 在文檔中,
PopupMenu 在錨定到視圖的模式彈出窗口中顯示菜單。 如果有空間,則彈出窗口將出現在錨視圖下方,如果沒有,則在其上方。 如果 IME 可見,則彈出窗口將不會與它重疊,直到它被觸摸。 觸摸彈出窗口之外將關閉它。
因此,在您的情況下,我已經測試過它錨定到由 getView() 創建的視圖實例; 我相信您的 PopupMenu 錨定到 mainMenuButton 的實例視圖,或由 getView() 創建的任何內容;
因為您正在使用以下構造函數PopupMenu(Context context, View anchor, int gravity)
創建彈出菜單的實例,所以這意味着您將彈出菜單錨定到某個視圖,彈出菜單將出現在該視圖的上方或下方。
setGravity(int gravity)
設置用於將彈出窗口與其錨視圖對齊的重力。
這只是讓你了解實際發生的事情。 因此,簡單的解決方案是將錨視圖放在彈出視圖將出現的位置,然后修改相對於錨的對齊,以修改相對於錨視圖的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.