扩展Android知识手机移动程序开发

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会有黑色边框,如何去除呢?一下有两种方法:

  1. 方法一:设置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掉,没有找到解决方法,欢迎知道解决方案的给我留言,谢谢

  1. 方法二:代码里是指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关注我:**

公众号

历史文章:

上一篇下一篇

猜你喜欢

热点阅读