关闭

android软键盘的各种操作

标签: android开发
3751人阅读 评论(0) 收藏 举报
分类:

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);
	}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:228874次
    • 积分:4071
    • 等级:
    • 排名:第7885名
    • 原创:123篇
    • 转载:31篇
    • 译文:1篇
    • 评论:54条
    最新评论