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


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

史上最全:安卓监听软键盘打开或者关闭

史上最全:安卓监听软键盘打开或者关闭SoftKeyboard open and close listener in an activity in Android?问题:我有一个Activity,里面有...
  • gusgao
  • gusgao
  • 2016年09月11日 16:43
  • 9422

Android手动显示和隐藏软键盘方法总结

本文介绍Android中如何通过代码来显示和隐藏软键盘
  • ccpat
  • ccpat
  • 2015年07月02日 00:14
  • 24811

【Android】解决软键盘遮挡登陆按钮

在应用登陆页面我们需要填写用户名和密码,
  • yigelangmandeshiren
  • yigelangmandeshiren
  • 2014年05月04日 15:42
  • 11260

Android EditText的设置以及软键盘的各种设置

EditText相关属性 EditText继承关系:View-->TextView-->EditText。  EditText的属性很多,这里介绍几个:  android:layout_gr...
  • CCstar1
  • CCstar1
  • 2015年12月18日 16:46
  • 2058

彻底搞定Android开发中软键盘的常见问题

软键盘显示的原理       软件盘的本质是什么?软键盘其实是一个Dialog。        InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Win...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年06月02日 15:11
  • 50873

android键盘表情流畅切换实现

android 键盘表情流畅切换大家都用微信,在聊天页面,软键盘与表情栏,工具栏之间的切换非常流畅,没有引起输入bar的上下抖动,体验非常好。这里讲一讲它的实现原理。...
  • github_25646711
  • github_25646711
  • 2015年10月22日 19:54
  • 1572

Dialog和软键盘在屏幕上的并存问题:

首先说下结论: 1.AlertDialog和ProgressDialog默认可以和系统软键盘并存与同意屏幕(其实质是并存于同一个window窗口,具体下面会解释) 2.Dialog以及用户自定义的...
  • u013168615
  • u013168615
  • 2015年07月31日 11:16
  • 4900

Android软键盘遮挡问题解决

在开发登录界面时,在点击某个EditText准备输入时,弹出的软键盘遮挡了按钮或者下面的输入框,在完成这个文本框的输入后,想要继续下面的操作,需要先隐藏软键盘。这会影响用户操作的流畅感,所以需要解决。...
  • lintax
  • lintax
  • 2016年11月27日 16:24
  • 1261

Android 禁止Edittext弹出系统软键盘 的几种方法

第一种方法:在XML文件下添加: android:focusable="true"    android:focusableInTouchMode="true" 第二种方法:直接关闭输入法...
  • sinat_27672523
  • sinat_27672523
  • 2017年02月24日 14:14
  • 6447

Android软键盘弹出时布局的调整问题

1。当不希望软键盘挤压布局时(直接覆盖下半部分) 设置该属性为android:windowSoftInputMode="adjustNothing" 即可 2.当Edittext处于屏幕下方时...
  • qq_21338465
  • qq_21338465
  • 2016年03月12日 17:53
  • 863
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android软键盘的各种操作
举报原因:
原因补充:

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