您的位置:首页 > 移动开发 > Android开发

Android 关于EditText软键盘的用法

2016-04-26 14:14 477 查看
    在开发的过程中我们经常会碰到软键盘的显示和隐藏,其实 Eidtext这个控件默认是你点击了它获得焦点之后就会自动地弹出软键盘,前提是你在竖屏的时候。但横盘的时候,不会自动弹出弹出软键盘。今天进来总结一下软键盘的显示和隐藏的用法。

    一:自动弹出软键盘

    直接看代码:

        Timer timer=new Timer();
timer.schedule(new TimerTask() {

public void run() {
InputMethodManager inputMethodManager=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 2000);
    二:软键盘的定义

    Activity中设置:Android:windowSoftInputMode="stateUnspecified",默认设置:软键盘的状态(隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。 "stateUnchanged", 软键盘被保持上次的状态。 "stateHidden",
当用户选择该Activity时,软键盘被隐藏。 "stateAlwaysHidden", 软键盘总是被隐藏的。 "stateVisible",. 软键盘是可见的。 "stateAlwaysVisible", 当用户选择这个Activity时,软键盘是可见的。 "adjustUnspecified",
它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间, 或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。 如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。也就是说, 系统自动决定是采用平移模式还是压缩模式,决定因素在于内容是否可以滚动。 "adjustResize",
压缩模式:当软键盘弹出时,要对主窗口调整屏幕的大小以便留出软键盘的空间。 "adjustPan" ,平移模式:当输入框不会被遮挡时,该模式没有对布局进行调整,然而当输入框将要被遮挡时, 窗口就会进行平移。也就是说,该模式始终是保持输入框为可见。

    三:隐藏软键盘

   EditText edit=(EditText)findViewById(R.id.edit);
   InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
    四:EditText默认不弹出软件键盘

    方法一:
   在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden

<activity Android:name=".Main"
Android:label="@string/app_name"
Android:windowSoftInputMode="adjustUnspecified|stateHidden"
Android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action Android:name="android.intent.action.MAIN" />
<category Android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
  方法二:
  让EditText失去焦点,使用EditText的clearFocus方法
  EditText edit=(EditText)findViewById(R.id.edit);
  edit.clearFocus();
  方法三:
  强制隐藏Android输入法窗口
  EditText edit=(EditText)findViewById(R.id.edit);
  InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
   五:EditText始终不弹出软件键盘
   EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);
    六:自定义软键盘的Enter键

    SDK升级到1.5以后,当文本输入框(EditText及其子类)获得焦点后,会弹出系统自带的软键盘

为了实现一些自定义的功能,就稍微研究了下,当layout中有多个EditText,把每个控件的android:singleLine的属性都被设置成true的情况下,软键盘的Enter键上 的文字会变“Next”,按下后下个EditText会自动获得焦点(实现了“Next”的功能);当最后一个控件获得焦点的时候,Enter键上的文 字会变成“Done”,按下后软键盘会自动隐藏起来,把EditText的Ime Options属性设置成不同的值,Enter键上可以显示不同的文字或图案

    actionNone : 回车键,按下后光标到下一行

    actionGo : Go,

    actionSearch : 放大镜图标

    actionSend : Send

    actionNext : Next

    actionDone : Done,隐藏软键盘(即使不是最后一个文本输入框 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 软键盘