2017-08-28 193 views
0

我正在嘗試自定義設置菜單或創建一些功能。我目前有一個標題和一個設置按鈕(帶有自定義圖標)的工具欄。此按鈕將打開一個PopupMenu的是這樣的:安卓下拉菜單設置菜單

btnOpenMenu.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     PopupMenu popupMenu = new PopupMenu(HomeActivity.this, view){ 
      @Override 
      public void setOnMenuItemClickListener(@Nullable OnMenuItemClickListener listener) { 
       super.setOnMenuItemClickListener(listener); 
      } 
     }; 

     popupMenu.inflate(R.menu.menu); 
     popupMenu.show(); 


    } 
}); 

彈出菜單是工作,但我現在需要自定義視圖,至少使其全寬和中央的文字,如圖所示:

dropdown menu

是否可以使用彈出式菜單進行此操作?我怎樣才能擴大菜單的寬度,並使其全寬?

在此先感謝。

回答

1

您可以使用ListPopUpWindow。好處是你可以自定義其內部的佈局,以將字符串列表與圖像也等嘗試使用此代碼。

ListPopupWindow listPopupWindow; 
setUpListpopupWindow(); 
btnOpenMenu.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     listPopupWindow.show(); 
    } 
}); 

在此處設置列表彈出窗口。

public void setUpListpopupWindow() { 
    listPopupWindow = new ListPopupWindow(BluetoothActivity.this); 
    listPopupWindow.setAnchorView(btnOpenMenu); 
    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    listPopupWindow.setWidth(metrics.widthPixels); //sets width as per the screen. 
    listPopupWindow.setHeight(ListPopupWindow.WRAP_CONTENT); 
    listPopupWindow.setModal(true); 

    View filterLayout = getLayoutInflater().inflate(R.layout.your_awesome_custom_layout, null); 

    listPopupWindow.setPromptView(filterLayout); 
} 
+0

謝謝..我很高興幫助.. –

1

取而代之的是使用彈出式菜單來製作全寬並居中文本。我不認爲這很容易。

爲什麼不使用Bottom Sheets

有很多的開源庫available.Make使用它。

+0

是的,這是一個很好的解決方法,謝謝! – Chuy