我有PopupWindow的片段。我使用以下代码启动Popup:
private PopupWindow createPopup;
private void initiateWindow(){
try {
LayoutInflater inflater = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.window_popup,
(ViewGroup) v.findViewById(R.id.popup_element));
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
createPopup = new PopupWindow(layout, width/2 + width/4, height/3, true);
createPopup.showAtLocation(layout, Gravity.CENTER, 0, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
它运行得非常好。我想在外面点击时关闭窗口。这是常见的事情,因此有很多关于互联网主题的教程和问题。问题是 - 它们都不起作用。
我尝试使用createPopup.setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
createPopup.setOutsideTouchable(true);
createPopup.setFocusable(true);
和类似的answers。
我还检查了是否可以使用此createPopup.setBackgroundDrawable(newColorDrawable(Color.BLACK));
以纯色填充弹出窗口后面的所有内容,以验证我是否有错误的核心代码,但它也没有帮助 - 所有与弹出布局无关的内容仍然可见。
答案 0 :(得分:0)
在外面触摸时关闭弹出窗口 - 当失去焦点时
print $dom->toString(1);
删除默认的黑色背景
createPopup.setOutsideTouchable(true);
createPopup.setFocusable(true);
如果createPopup.setBackgroundDrawable(new ShapeDrawable());
有效,请使用此
ShapeDrawable()
答案 1 :(得分:0)
创建一个新的xml样式,如下所示。
<style name="AppTheme.PopupWindow">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
创建主题后您需要做的就是将其应用于清单中的fragmentactivity。
<activity android:name=".PopupWindow" android:theme="@style/AppTheme.PopupWindow"></activity>