PopupWindow的一般使用和去除黑色边框
2017-03-14 本文已影响747人
安卓程序猿
前言
开发中发现默认的PopupWindow会有黑色边框,以前在做PopupWindow的时候,大部分都是拷贝网上的代码,就没有太多在意。今天发现这个问题后,就特别留意了一下。
欢迎搜索微信公众号SamuelAndroid关注我,文章末尾有公众号二维码。
初始化PopupWindow
popupWindow = new PopupWindow(this);
View view = LayoutInflater.from(this).inflate(R.layout.popup_sort, null);
popupWindow.setContentView(view);
popupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
//PopupWindow对象设置高度
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
//PopupWindow对象设置获取焦点
popupWindow.setFocusable(true);
//PopupWindow对象设置可以触发点击事件
popupWindow.setTouchable(true);
popupWindow.setOutsideTouchable(true);
显示PopupWindow
这里我们使用v4包里的PopupWindowCompat,详细代码如下:
//使用V4提供的PopupWindowCompat的showAsDropDown方法显示出PopupWindow对象
//五个参数为:
//popup - 需要显示的PopupWindow对象
//anchor - 需要在什么View组件上显示
//xoff - 显示在View组件上X轴横向坐标点
//yoff - 显示在View组件上Y轴横向坐标点
//gravity - 显示的对齐方式
PopupWindowCompat.showAsDropDown(popupWindow, anchor, 0, 0, Gravity.LEFT);
此时PopupWindow会有黑色边框,如何去除呢?一下有两种方法:
- 方法一:设置style
<style name="Transparent_Dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
初始化PopupWindow改为:
popupWindow = new PopupWindow(this, null, R.style.Transparent_Dialog);
此时黑色边框就已经没了。
注:采用该方法,发现点击PopupWindow外无法dismiss掉,没有找到解决方法,欢迎知道解决方案的给我留言,谢谢
- 方法二:代码里是指background
popupWindow.setBackgroundDrawable(new ColorDrawable(0));//new ColorDrawable(0)即为透明背景
该方法可以点击区域外可以正常dismiss。
完整代码如下:
private void showPopWindow(View anchor) {
PopupWindow popupWindow = new PopupWindow(this);
View view = LayoutInflater.from(this).inflate(R.layout.popup_sort, null);
popupWindow.setContentView(view);
popupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
//PopupWindow对象设置高度
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
//PopupWindow对象设置获取焦点
popupWindow.setFocusable(true);
//PopupWindow对象设置可以触发点击事件
popupWindow.setTouchable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new ColorDrawable(0));
//使用V4提供的PopupWindowCompat的showAsDropDown方法显示出PopupWindow对象
//五个参数为:
//popup - 需要显示的PopupWindow对象
//anchor - 需要在什么View组件上显示
//xoff - 显示在View组件上X轴横向坐标点
//yoff - 显示在View组件上Y轴横向坐标点
//gravity - 显示的对齐方式
PopupWindowCompat.showAsDropDown(popupWindow, anchor, 0, 0, Gravity.LEFT);
}
更多内容可以关注我的公众号或者搜索SamuelAndroid关注我:**
公众号