android - 通过后退按钮关闭弹出窗口

标签 android android-popupwindow

我想通过单击弹出窗口外部或后退按钮来关闭弹出窗口,但是当单击后退按钮时我的应用程序退出,而不是退出应用程序我想关闭弹出窗口。

这是我的代码,

ivmainmenu.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        LayoutInflater layoutInflater = (LayoutInflater)getBaseContext()
                .getSystemService(LAYOUT_INFLATER_SERVICE);  
        View popupView = layoutInflater.inflate(R.layout.popupwindow, null);  
        final PopupWindow popupWindow = new PopupWindow(popupView,LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT);  
        popupWindow.showAsDropDown(ivmainmenu, 0,14);
        popupView.setPadding(0, 0, 0, 10);
        popupWindow.showAsDropDown(ivmainmenu);

        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        popupWindow.setOutsideTouchable(false);

        TextView tvpopupwork = (TextView)popupView.findViewById(R.id.tvpopupwork);
        TextView tvpopupabout = (TextView)popupView.findViewById(R.id.tvpopupabout);
        TextView tvpopupservices = (TextView)popupView.findViewById(R.id.tvpopupservices);
        TextView tvpopupcontact = (TextView)popupView.findViewById(R.id.tvpopupcontact);

        Typeface typeFace2 =  Typeface.createFromAsset(getAssets(),"fonts/arboriaboldregular.ttf");
        tvpopupwork.setTypeface(typeFace2);
        tvpopupabout.setTypeface(typeFace2);
        tvpopupservices.setTypeface(typeFace2);
        tvpopupcontact.setTypeface(typeFace2);

        tvpopupwork.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(Home.this,Ourwork.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                startActivity(intent);
            }
        });

        tvpopupabout.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(Home.this,Aboutus.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                startActivity(intent);  
            }
        });

        tvpopupservices.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent intent = new Intent(Home.this,Services.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                startActivity(intent);
            }
        });

        tvpopupcontact.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent intent = new Intent(Home.this,Contact.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                startActivity(intent);
            }
        });

        ivmainmenu.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                popupWindow.dismiss();
            }
        });
    }
});

它给了我想要的结果,但是当我关闭菜单时,它不会再次打开,我想再次打开它,我该怎么办? 谢谢。

最佳答案

替换

popupWindow.setOutsideTouchable(false);

有了这个

popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);

关于android - 通过后退按钮关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898723/

相关文章:

android - 如何使用 Espresso 在 Android 上进行测试?

android - 更改 xml 字符串数组中项目的字体颜色

android - 无法在移动设备上显示 PopupWindow 消息

android - 弹出窗口/显示为下拉菜单

android - android sha224和python sha224的区别

java - 滚动不起作用时工具栏自动隐藏和显示

android - type_linear_acceleration 的权限

android - 选择textview时如何显示弹出窗口而不是CAB?

Android - 使用微调器默认投影

java - 如何为 android 创建 vector 可绘制对象?