Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在弹出窗口外触摸时关闭PopupWindow,而不使用不推荐的构造函数_Android_Popupwindow - Fatal编程技术网

Android 在弹出窗口外触摸时关闭PopupWindow,而不使用不推荐的构造函数

Android 在弹出窗口外触摸时关闭PopupWindow,而不使用不推荐的构造函数,android,popupwindow,Android,Popupwindow,我有一个PopupWindow,我想在用户接触到外部时将其关闭,因此我查看并发现我必须使用popup.setBackgroundDrawable(new BitmapDrawable())。问题是构造函数new BitmpaDrawable()已被弃用。我想找到一个不用它的解决方案 有人知道怎么解决这个问题吗 谢谢 final PopupWindow popup = new PopupWindow(sortByView,

我有一个PopupWindow,我想在用户接触到外部时将其关闭,因此我查看并发现我必须使用
popup.setBackgroundDrawable(new BitmapDrawable())。问题是构造函数
new BitmpaDrawable()
已被弃用。我想找到一个不用它的解决方案

有人知道怎么解决这个问题吗

谢谢

                final PopupWindow popup = new PopupWindow(sortByView,
                                          ViewGroup.LayoutParams.WRAP_CONTENT,
                                          ViewGroup.LayoutParams.WRAP_CONTENT,            
                                          true);
                popup.setBackgroundDrawable(new BitmapDrawable());
                popup.setOutsideTouchable(true);
                popup.showAsDropDown(v);

嗯,可设置背景图,不要错过弹出窗口。我认为弹出窗口的默认行为是在触摸外部时关闭,但您可以像这样添加onDismiss侦听器

popup.setOnDismissListener(new PopupWindow.OnDismissListener() {

    @Override
    public void onDismiss() {
        popup.dismiss();
        // end may TODO anything else                   
    }
});
你可以试试

popup.setBackgroundDrawable(new BitmapDrawable(getResources(),
            ""));

我必须做什么才能让它工作:

popup.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, android.R.color.transparent)));
popup.setOutsideTouchable(true);

如果我不使用popup.setBackgroundDrawable(new BitmapDrawable())这行代码,我认为弹出窗口的默认行为不是关闭触摸时弹出窗口不会关闭。这只适用于该行,但是
new BitmapDrawable()
已被弃用,因此我得到了一个我想要避免的警告。如何显示弹出窗口?如果在调用“popup.disease()”时使用popup.showAsDropDown()显示它,则会关闭弹出窗口。检查您的代码是否有一行“popup.setOutsideTouchable(true)”。并尝试:popup.setModal(true)是的,我正在使用
popup.showAsDropDown(v)。PopupWindow没有一个方法
popup.setModal(true)
Ok很抱歉之前的问题,但是删除了行popup.setOutsideTouchable(true);,因为它控制弹出窗口是否会被告知其窗口外的触摸事件,之后您将不会遇到此问题。popup.setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));我尝试过同样的东西,它在emulator中工作,但同样的代码在设备上不工作。问题是什么?