目前,我正在编程创建一个popupmenu,其中显示一个楼层和标题的列表。但是,改变标题的背景颜色并为标题添加一个关闭按钮将变成一场噩梦。如何用列表popupwindow替换popupmenu代码?
我想用列表弹出窗口替换这个popupmenu,这样我就可以为背景属性添加一个带有黑色背景属性的XML文件作为背景,并且菜单中项目的右侧和白色背景上的关闭按钮。有没有一种方法可以通过列表弹出窗口实现这一点?这里是我的代码为:
private void floorMenu(ImageView btnFloorMenu){
MapData data = new MapDao(MyPlugin.mapId);
final List<Floor> flList = dao.getFloors();
// set popupMenu
final PopupMenu floorsPm = new PopupMenu(MapViewActivity.this,btnFloorMenu);
MenuItem titleItem = floorsPm.getMenu().add(Menu.NONE, Menu.NONE, Menu.NONE, "Floors");
int i = 1;
for(Floor fl : flList)
{
floorsPm.getMenu().add(Menu.NONE, i,i, fl.getName());
if(i>3)
break;
i++;
}
// add popup listener
floorsPm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
// onClick
@Override
public boolean onMenuItemClick(MenuItem item){
// get floorname
int flOrder = item.getOrder();
if(flOrder == Menu.NONE)
return true;
flOrder--;
final String floorId = flList.get(flOrder).getMapId();
// set camera to floor
runOnUiThread(new Runnable() {
@Override
public void run() {
floorsPm.dismiss();
mapFragment.getMapManager().setCameraLayer(floorId, false);
Log.d(TAG, "post cameraLayer set");
changedSteps = true;
pauseNav();
}
});
return true;
}
});
floorsPm.show();
}
'ListPopupWindow'由ListView支持,并且根本不提供任何定制。你可以在这里找到(https://github.com/natario1/Autocomplete/blob/master/autocomplete/src/main/java/com/otaliastudios/autocomplete/AutocompletePopup.java)一个可以托管任何视图的弹出窗口。只需调用'setView(view)'而不是'show()'。 – natario