哈喽沃德

心有波澜,眼界就会变得浑浊......

android软键盘的各种操作

Android中的软键盘的操作到处都是,比如当我们进入某个画面,该画面有个EditText控件,此时在没做处理的情况下会获取焦点自动弹出软键盘;因此我们想:


①、在该EditText 获取焦点时,不弹出软键盘

②、该EditText 获取焦点与不获取焦点,都不弹出软键盘

③、进入activity时,不弹出软键盘,当用户需要时再弹出软键盘。

④、点击屏幕其他地方该EditText 失去焦点,并且关闭软键盘。、

......

各种各样的需求如期而至。这里只介绍相关软键盘操作,至于为什么这么操作,深层次问题还得自己慢慢研究了。

/**
     * 某个特定view获得焦点时,关闭软键盘
     * @param context
     *            view所在activity
     * @param view
     *            当前activity中获取焦点的view
     */
    public void closeKeyboardForCommonAct(Context context, View view) {
        InputMethodManager imm = (InputMethodManager) ((Activity) context)
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        if (((Activity) context).getCurrentFocus().getWindowToken() != null) {
            imm.hideSoftInputFromInputMethod(view.getWindowToken(),
                    InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }


    /**
     *  普通关闭
     * @param context
     */
    public void closeKeyboardCommAct(Context context){
        
        InputMethodManager imm = (InputMethodManager) ((Activity) context)
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        
        if (((Activity) context).getCurrentFocus() != null) {
            imm.hideSoftInputFromWindow(((Activity) context).getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
        
    }


    /**
     *  进入画面时,关闭键盘
     * @param context
     */
    public void closeWhenOncreate(Context context){
        
//        SOFT_INPUT_STATE_ALWAYS_VISIBLE  键盘始终显示
        ((Activity)context).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) ;
    }

	// 点击空白处 软键盘消失
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
		return imm.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);
	}


	public static void openKeyboard(final Context mContex) {

		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				InputMethodManager imm = (InputMethodManager) ((Activity) mContex).getSystemService(mContex.INPUT_METHOD_SERVICE);
				imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
			}
		}, 500);
	}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xxm282828/article/details/17101663
文章标签: android开发
个人分类: Android开发主线
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭