使用citypicker 库出现的问题和解决。
一、设置.backgroundPop(Color.BLACK)没有效果,显示为如下图片。
查看了源码,原因出在了,pop_citypicker.xml文件之中。
在之中有一个
ll_root的android:layout_height="match_parent"
属性为全屏,使得每次popupWindow的contentView一直为全屏,所以设置this.popwindow.setBackgroundDrawable(new ColorDrawable(this.backgroundPop));
不管用。因为整个popupwindow显示的是ll_root的。
解决 设置 ll_root的backgrou属性为透明:
android:background="@android:color/transparent"
使得我设置黑色背景显示了。
PS:(ll_root的高度设置为wrap_content不管用,因为ll_title_background控件里面有个android:layout_alignParentBottom="true"属性)
如下图:
但是,我想设置为.backgroundPop(Color.TRANSPARENT),显示的情况和上方图111是一个情况,这个就不知道原因是出自哪里了。。。
二、解决 .backgroundPop(Color.TRANSPARENT),显示的情况和上方图111是一个情况
将 pop_citypicker.xml文件之中的ll_title_background 的
android:layout_alignParentBottom="true"
属性删掉。将CityPicker的中的popupWindow的高度设置为WRAP_CONTENT:
this.popwindow = new PopupWindow(this.popview, -1, -2);
这样效果如下图3:
- 但是上面的背景想变成半透明的,这个就好办多了。
- 在你调用 mCityPicker.show();的地方,设置外部View的透明度setAlpha()
// 透明度的值
mMain_continer.setAlpha(0.3f);
// 设置 popupWindow的 消失 监听,在消失的时候 设置透明度为1 不透明
mCityPicker.getPopupWindow().setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
// 设置透明度为1 不透明
mMain_continer.setAlpha(1f);
}
});
PS: 我在源码中加了获取里面的popupwindow的方法,如下:
public PopupWindow getPopupWindow() {
return this.popwindow;
}