citypicker
citypicker copied to clipboard
期望控件覆盖在dialog上层,但是控件显示在dialog下层了
作者能看到吗?这个问题太重要了 因为这个控件需要在dialog上引用
收到,正在修复,请等待
同问,我也遇到这个问题了。
能否贴一下具体如何在diaolog中使用的?我这边跟踪一下,方便解决
使用方法和activity一样,只不过把控件放在dialog里面进行调用。
这种情况问题出在popwindow显示的parentView应该是dialog的rootView,而我们使用的是window。如下:
sharePopuWindown.showAtLocation(parentView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); 我们需要将parentView换成dialog.getRootView();
最好可以提供一个方法给外部调用 来设置传入的view对象
你这里直接是引用的activity的parentview对象 所以直接显示在了dialog下方
解决;了吗
可以使用反射,把showAtLocation的第一个View参数换成Dialog里面的就行了,目前针对5.2.2版本,我尝试了一下,可行。但我是用fragmentDialog来测试的,具体代码是: DCityPicker cityPicker = new JDCityPicker(); cityPicker.init(context); JDCityConfig jdCityConfig = new JDCityConfig.Builder().build(); jdCityConfig.setShowType(JDCityConfig.ShowType.PRO_CITY_DIS); cityPicker.setConfig(jdCityConfig); cityPicker.setOnCityItemClickListener(new OnCityItemClickListener() { @Override public void onSelected(ProvinceBean province1, CityBean city1, DistrictBean district) { if (callBack != null) { callBack.onCityPick(province1.getName(), city1.getName(), district.getName()); } }
@Override
public void onCancel() {
}
});
//开始反射获取 Class clazz = cityPicker.getClass(); try { Field field = clazz.getDeclaredField("popwindow"); field.setAccessible(true); Method method = clazz.getDeclaredMethod("initJDCityPickerPop"); method.setAccessible(true); method.invoke(cityPicker); PopupWindow popupWindow = (PopupWindow) field.get(cityPicker); if (!popupWindow.isShowing()) popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0); } catch (Exception e) { e.printStackTrace(); }
解决;了吗
解决了,看上面
解决;了吗
解决了,看上面
OK