Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

期望控件覆盖在dialog上层,但是控件显示在dialog下层了 #176

Open
wanpeiyu opened this issue Feb 15, 2020 · 9 comments
Open

Comments

@wanpeiyu
Copy link

No description provided.

@wanpeiyu
Copy link
Author

作者能看到吗?这个问题太重要了 因为这个控件需要在dialog上引用

@crazyandcoder
Copy link
Owner

收到,正在修复,请等待

@skyfouk
Copy link

skyfouk commented Mar 5, 2020

同问,我也遇到这个问题了。

@crazyandcoder
Copy link
Owner

能否贴一下具体如何在diaolog中使用的?我这边跟踪一下,方便解决

@wanpeiyu
Copy link
Author

wanpeiyu commented Mar 13, 2020

使用方法和activity一样,只不过把控件放在dialog里面进行调用。

这种情况问题出在popwindow显示的parentView应该是dialog的rootView,而我们使用的是window。如下:

sharePopuWindown.showAtLocation(parentView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
我们需要将parentView换成dialog.getRootView();

最好可以提供一个方法给外部调用 来设置传入的view对象
你这里直接是引用的activity的parentview对象 所以直接显示在了dialog下方

@thatCbin
Copy link

thatCbin commented Nov 4, 2020

解决;了吗

@a453826252
Copy link

可以使用反射,把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();
}

@a453826252
Copy link

解决;了吗

解决了,看上面

@thatCbin
Copy link

解决;了吗

解决了,看上面

OK

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants