Android开发:在EditText中关闭软键盘

1、EditText有焦点(focusable为true)阻止输入法弹出

Java代码  

  1. editText=(EditText)findViewById(R.id.txtBody);
  2. editText.setOnTouchListener(new OnTouchListener() {
  3. public boolean onTouch(View v, MotionEvent event) {
  4. editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘
  5. return false;
  6. }
  7. });

2、当EidtText无焦点(focusable=false)时阻止输入法弹出

Java代码  

  1. InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
  2. imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

1.调用显示系统默认的输入法

方法一、

Java代码  

  1. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  2. imm.showSoftInput(m_receiverView(接受软键盘输入的视图(View)),InputMethodManager.SHOW_FORCED(提供当前操作的标记,SHOW_FORCED表示强制显示));

方法二、

Java代码  

  1. InputMethodManager m=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  2. m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); (这个方法可以实现输入法在窗口上切换显示,如果输入法在窗口上已经显示,则隐藏,如果隐藏,则显示输入法到窗口上)

2.调用隐藏系统默认的输入法

Java代码  

  1. ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);  (WidgetSearchActivity是当前的Activity)

3.获取输入法打开的状态

Java代码  

  1. InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  2. boolean isOpen=imm.isActive();
  3. isOpen若返回true,则表示输入法打开

原文:http://sunxin1001.iteye.com/blog/854182

http://getcn.net/index.php?mod=skill&action=detail&id=43978

另外

参数             含义

WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN

软键盘直接覆盖Activity,通常这是默认值

WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE

Activity高度会变化,让出软键盘的空间。和WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN 为2选1的值

WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE

Activity一打开就直接显示软键盘窗口,如果该窗口需要的话(即有EditText,或有ditable的控件)

WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN

Activity打开后并不直接显示软键盘窗口,直到用户自己touch文本框。

时间: 2024-10-13 14:44:11

Android开发:在EditText中关闭软键盘的相关文章

Android开发:在EditText中关闭软键盘 转来的

1.EditText有焦点(focusable为true)阻止输入法弹出 Java代码   editText=(EditText)findViewById(R.id.txtBody); editText.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘

【android】禁止Edittext弹出软键盘并且使光标正常显示

/** * 禁止Edittext弹出软件盘,光标依然正常显示. */ public void disableShowSoftInput() { if (android.os.Build.VERSION.SDK_INT <= 10) { editText.setInputType(InputType.TYPE_NULL); } else { Class<EditText> cls = EditText.class; Method method; try { method = cls.get

Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

前言 开发做得久了,总免不了会遇到各种坑.而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页面底部有一个EditText,如果不做任何处理,那么在软键盘弹出的时候,就有可能会挡住EditText.对于这种情况的处理其实很简单,只需要在AndroidManifest文件中对activity设置:android:windowSoftInputMode的值adjustPan或者adjustResi

调用Android中的软键盘

我们在Android提供的EditText中单击的时候,会自动的弹 出软键盘,其实对于软键盘的控制我们可以通过InputMethodManager这个类来实现.我们需要控制软键盘的方式就是两种一个是像 EditText那样当发生onClick事件的时候出现软键盘,还有就是当打开某个程序的时候自动的弹出软键盘. public class InputMethodManagerTest extends Activity implements OnClickListener{ private Butto

Android 中自定义软键盘

Android 中自定义软键盘    图一为搜狗输入法.图二为自定义密码键盘.图三为自定义密码键盘 java源文件 package com.keyboarddemo; import android.content.Context; import android.graphics.Paint; import android.graphics.Rect; import android.text.method.PasswordTransformationMethod; import android.u

android 点击关闭软键盘

在项目中,editText获取焦点后,会自动弹出软键盘,关闭的时候一般需要按返回键或者点击软键盘上的按钮, 即使当前activity已经finish掉,软键盘依然存在,会影响用户的体验. 网上目前有很多很详细的办法,比如点击其他空白区域,软键盘就会消失之类的方法,我们项目中没有要求这个,要求的是只要 不遮挡其他操作,还有当前Activity关闭掉后软键盘消失就行, 今天给大家分享两个办法: //此方法,如果显示则隐藏,如果隐藏则显示 private void hintKbOne() { Inpu

安卓工具类--------&gt;打开或关闭软键盘

import android.content.Context; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; //打开或关闭软键盘 public class KeyBoardUtils { /** * 打卡软键盘 * * @param mEditText输入框 * @param mContext上下文 */ public static void openKeybord(Edi

Android开发,在Fragment中,隐藏或关闭软键盘(虚拟键盘)的方法

网上可以搜到各种方法,实际测试中,我的开发用机中,仅仅下面这个方法有效,记录一下. //隐藏虚拟键盘      public static void HideKeyboard(View v)      {          InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );             if ( imm.isA

Android开发 解决AlertDialog中的EditText无法调出输入法的问题

在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题.解决方法,有两种,一是把AlertDialog换成Dialog,但这么一来,对话框的最外层会多出一个框,顶部还会空几十个DP,当然可以用setBackgroundDrawable(new ColorDrawable(0))把背景设为透明,隐藏掉边框,但是上面空着的几十个DP还在,对话框就不是在屏幕居中了.代码: Dialog ad = new Dialog(cont