android 怎么实现点击屏幕其他地方popupwindow消失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么实现点击屏幕其他地方popupwindow消失相关的知识,希望对你有一定的参考价值。

我看网上问的都是怎么让他不消失,难道他默认是消失的吗?我的怎么点击屏幕其他地方,他不消失。求大神帮助。

只需要设置proupwindows的setOutsideTouchable属性即可。

以下为示例代码:

private void showPopupWindow(View parent)   
        if (popupWindow == null)   
            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
            view = layoutInflater.inflate(R.layout.group_list, null);  
            lv_group = (ListView) view.findViewById(R.id.lvGroup);  
              
            Collections.reverse(groups);  
            GroupAdapter groupAdapter = new GroupAdapter(this, groups);  
            lv_group.setAdapter(groupAdapter);  
            popupWindow = new PopupWindow(view, 200, 220);  
          
        popupWindow.setFocusable(true);  
        popupWindow.setOutsideTouchable(true);  //设置点击屏幕其它地方弹出框消失      
        popupWindow.setBackgroundDrawable(new BitmapDrawable());  
        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);  
        int xPos = -popupWindow.getWidth() / 2  
                + getCustomTitle().getCenter().getWidth() / 2;  
  
        popupWindow.showAsDropDown(parent, xPos, 4);  
  
        lv_group.setOnItemClickListener(new OnItemClickListener()   
            @Override  
            public void onItemClick(AdapterView<?> adapterView, View view,  
                    int position, long id)   
                loadNew(((StringItem)(groups.get(position))).getId());  
                if (popupWindow != null)   
                    popupWindow.dismiss();  
              
        );  
    
参考技术A mWindow = new PopupWindow(context);

mWindow.setTouchInterceptor(new OnTouchListener()
@Override
public boolean onTouch(View v, MotionEvent event)
if (event.getAction() == MotionEvent.ACTION_OUTSIDE)
mWindow.dismiss();

return true;


return false;

);追问

m= new PopupWindow(Global.SCREEN_WIDTH/4, Global.SCREEN_HEIGHT/5);
m.setContentView(popupWindow);
下面是按你的copy下来的,字数有限制,我就省略了
我按照你的代码这样实现之后还是不行啊

追答

mWindow.setOutsideTouchable(true);

本回答被提问者采纳

android开发,在EditText中输入了数据,要求在点击屏幕其它地方后,键盘自动隐藏!请代码

自己做的程序,只有一个EditText,点屏幕其它地方或点击按钮后无法隐藏键盘,急求代码,完善解决的,再给高分!

参考技术A InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

//隐藏软键盘

imm.hideSoftInputFromWindow(tv.getWindowToken(), 0);
用tv可以是你的layout追问

是在输入后快点屏幕才隐藏的哦,不是一直隐藏。还有,代码放哪个文件里,谢谢,再麻烦下

等下试试看

追答

上面的代码就放在你oncreate()里就行
imm.showSoftInputFromInputMethod(editText.getWindowToken(),
0);这个是现实软键盘
放在你EditText的Onclick事件里

追问

能否写个完整的代码给我?

参考技术B 正常是会隐藏的,你让EditText失去焦点后就消失的啊追问

关键是不行啊,大哥!帮帮我吧

参考技术C 我试了下,的确关不了键盘,只能自已手动隐藏键盘。如果要实现此功能,须:
1.点击屏幕产生一个事件;
2.事件时能关闭输入法;
关注。追问

点按钮后也不能隐藏啊

追答

是的,我只是设想。我是初学一周左右,许多功能不熟悉。

参考技术D 代码发出来给你看看啊追问

在哪里

以上是关于android 怎么实现点击屏幕其他地方popupwindow消失的主要内容,如果未能解决你的问题,请参考以下文章

Android 点击其他地方键盘消失

如何在类似按钮单击android时通知其他屏幕

QML Popup弹窗置于最顶层,实现点击位置该弹出窗口下方的任何其他层组件,Popup弹窗都不会关闭

QML Popup,屏蔽其他控件,使除了Popup控件的其他控件不再响应

android中怎么用代码实现截屏

android 怎么获取当前屏幕的截图