Android 下拉设置菜单
Android Dropdown Settings Menu
我正在尝试自定义设置菜单或创建具有该功能的内容。我目前有一个带有标题的工具栏和一个设置按钮(带有自定义图标)。此按钮以这种方式打开 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();
}
});
弹出菜单可以使用,但我现在需要自定义视图,至少使其全宽并使文本居中,如图所示:
是否可以使用弹出菜单来做到这一点?如何扩展菜单的宽度并使其全宽?
提前致谢。
改为使用弹出菜单使其全宽并使文本居中。我认为这并不容易。
你为什么不使用 Bottom Sheets。
有很多开源库available.Make使用它。
您可以为此使用 ListPopUpWindow
。优点是您可以自定义其中的布局以放置带有图像的字符串列表等。尝试使用此代码。
ListPopupWindow listPopupWindow;
setUpListpopupWindow();
btnOpenMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listPopupWindow.show();
}
});
在此处设置您的列表弹出窗口window。
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);
}
我正在尝试自定义设置菜单或创建具有该功能的内容。我目前有一个带有标题的工具栏和一个设置按钮(带有自定义图标)。此按钮以这种方式打开 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();
}
});
弹出菜单可以使用,但我现在需要自定义视图,至少使其全宽并使文本居中,如图所示:
是否可以使用弹出菜单来做到这一点?如何扩展菜单的宽度并使其全宽?
提前致谢。
改为使用弹出菜单使其全宽并使文本居中。我认为这并不容易。
你为什么不使用 Bottom Sheets。
有很多开源库available.Make使用它。
您可以为此使用 ListPopUpWindow
。优点是您可以自定义其中的布局以放置带有图像的字符串列表等。尝试使用此代码。
ListPopupWindow listPopupWindow;
setUpListpopupWindow();
btnOpenMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listPopupWindow.show();
}
});
在此处设置您的列表弹出窗口window。
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);
}