【发布时间】:2017-04-24 16:13:10
【问题描述】:
目前,我正在以编程方式创建一个弹出菜单,其中显示楼层列表和标题。但是,仅更改标题的背景颜色并在标题中添加关闭按钮是一场噩梦。
我想用列表弹出窗口替换这个弹出菜单,这样我就可以添加一个带有背景属性的 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 提供支持,几乎不提供自定义功能。您可以找到here 一个可以托管任何视图的弹出窗口。只需致电setView(view)和show()。
标签: android popup popupwindow popupmenu android-popupwindow