我有一个弹出窗口,当活动中的按钮被点击时会弹出。对话框覆盖整个屏幕,只包含三个按钮。如果单击按钮,则它们会相应地工作。但是,如果用户在弹出窗口中除按钮以外的任何地方触摸,则希望弹出窗口消失。我尝试了以下代码。
但是它没有起作用。我也设置了这个:
popupWindow.setOutsideTouchable(true);
popupWindow.showAtLocation(layout, Gravity.FILL, 0, 0);
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
popupWindow.dismiss();
return true;
}
return false;
}
});
但是它没有起作用。我也设置了这个:
popupWindow.setFocusable(true);
popupWindow.setTouchable(true);
我的弹出窗口布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_element"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="10px">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:padding="10dp">
<ImageButton
android:id="@+id/voiceCall"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center|center_horizontal"
android:background="@drawable/round_button"
android:padding="15dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_call_black_24dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Voice Call"
android:textColor="#ffffff"
android:textSize="20dp" />
</LinearLayout>
</LinearLayout>
如果我在这个弹出窗口除了那两个按钮之外的任何地方点击,我希望它被关闭。
对我来说无效。有人可以建议我如何做到这一点吗?此外,如果点击设备的返回按钮,我希望弹出窗口消失。