IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Android - 点击EdieText之外的控件隐藏软键盘

    csharp25发表于 2017-04-29 13:12:51
    love 0

    //工具类

    ...
    public static void hideKeyboard(Context ctx) {
    		if (ctx != null) {
    			View view = ((Activity) ctx).getCurrentFocus();
    			if (view != null) {
    				InputMethodManager inputManager = (InputMethodManager) ctx
    						.getSystemService(Context.INPUT_METHOD_SERVICE);
    				inputManager.hideSoftInputFromWindow(view.getWindowToken(),
    						InputMethodManager.HIDE_NOT_ALWAYS);
    			}
    		}
    	}


    //点击除EDITTEXT之外的控件隐藏软键盘,如果是viewgroup控件,递归执行
    public static void setupUI(View view, final Context ctx) {
    
    
    	    //Set up touch listener for non-text box views to hide keyboard.
    	    if(!(view instanceof EditText)) {
    
    
    	        view.setOnTouchListener(new OnTouchListener() {
    
    
    	            public boolean onTouch(View v, MotionEvent event) {
    	            	hideKeyboard(ctx);
    	                return false;
    	            }
    
    
    	        });
    	    }
    
    
    	    //If a layout container, iterate over children and seed recursion.
    	    if (view instanceof ViewGroup) {
    
    
    	        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
    
    
    	            View innerView = ((ViewGroup) view).getChildAt(i);
    
    
    	            setupUI(innerView, ctx);
    	        }
    	    }
    	}
    ...
    }


    调用时只需要传递最外层的layout即可。
    	UtilApp.setupUI((RelativeLayout) findViewById(R.id.login_parent), mContext);




沪ICP备19023445号-2号
友情链接