android软键盘的各种操作

原创 2013年12月03日 21:41:48

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android 操作软键盘

Android 操作软键盘 软键盘 softInput EditText

android EditText软键盘相关操作

一、显示软盘设置 1、一般android的EditText当获取焦点后都会自动弹出软件盘,但有在模拟器中可能可以直接用电脑键盘代替软键盘进行输入,看不到弹出软件盘,这时就需要编辑模拟器了,如下图: ...

Android 软键盘的工作原理及相关操作

1.软键盘的显示原理        软键盘其实是一个Dialog。InputMethodService为我们的输入法创建了一个Dialog,并且对某些参数进行了设置,使之能够在底部或者全屏显示。当我...

android 如何显示软键盘中的搜索以及处理点击搜索却进行了两次操作问题

android 如何显示软键盘中的搜索以及处理点击搜索却进行了两次操作问题最近在项目中遇到的一个需求是,需要调出android手机中的软件盘,并在软件盘上显示出“搜索”按钮,然后通过这个“搜索”按钮进...

android软键盘操作

转至:http://blog.csdn.net/wang_shaner/article/details/8467688 "EditText + Button"  形成一个 "输入+按...

Android软键盘的显示方式Demo

  • 2012年08月29日 13:44
  • 300KB
  • 下载

安卓开发:监听软键盘的显示与隐藏,并作出其他操作

对于安卓的软键盘的显示隐藏,查了好多资料,得出一个结论,就是Google并没有提供接口来直接判断键盘是否是显示状态。 刚好项目中遇到这个问题,目前解决了,就贡献出来给Androider。 我的思路...

Android软键盘学习资料

  • 2013年06月04日 11:11
  • 332KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android软键盘的各种操作
举报原因:
原因补充:

(最多只允许输入30个字)