在工作过程中,常常会遇见需要根据自己的需求,控制文本框的键盘显示和隐藏。 通过查阅Android文档,介绍可以通过在清单文件中<activity>元素中添加android:windowSoftInputMode属性来处理。

这个属性主要影响两件事情:

1.软键盘的状态—当Activity显示给用户的时候,它是显示还是隐藏。

2.主活动窗口的调整—它是否调整主窗体大小来给软键盘腾出空间,或者在部分窗口被软键盘覆盖的时候,它的内容能否上拉让当前的焦点可见。

该属性设置必须由如下表格中的一个,或者一个”state..."值和一个"adjust..."值的组合,或者在任意组中设置多个值。每个值使用|分隔。

<activity android:windowSoftInputMode="stateVisible|adjustResize". . .> 

1.设置软件盘的状态 

描述

"stateUnspecfied"

不指定软键盘的状态,系统将选择一个合适的状态,或者依赖主题的设置。这是默认的软键盘行为设置。

"stateUnchanged"

当Activity显示的时候,软键盘保持它前面Activity的任何状态,无论显示或者隐藏。

"stateHidden"

当用户选着这个Activity,显示的时候软键盘隐藏。

"stateAlwaysHidden"

当Activity的主窗体获取输入焦点的时候,软键盘总是隐藏。(经测试,在三星I959手机中无效)

"stateVisible"

当在适当的时候,软键盘显示。

"StateAlwaysVisible"

当用户选择这个Activity,显示的时候软键盘总是可见。(经测试,在三星I959手机中无效)

2.对主活动窗口的调整 

"adjustUnspectified"

没有明确指定是否Activity的主窗体调整来给软键盘腾出空间,或者窗体的内容上拉使得当前的焦点在屏幕中可见。

"adjustResize"

Activity的主窗体总是为屏幕中的软键盘腾出空间。

"adjustPan"

Activity的窗体的内容上拉,使得当前的焦点在屏幕中可见。

3.adjustResize和adjustPan的实际效果: 

实验一:页面B指定属性adjustResize,观察页面B的键盘状态

显示键盘前: 不显示软键盘

显示键盘后:重置了窗体大小,并且保持当前的焦点输入框在屏幕中可见

实验二:页面B指定属性adjustPan,观察页面B的键盘状态

显示键盘前: 不显示软键盘

显示键盘后:界面没有重置大小,内容整体向上拉,当前焦点输入框在屏幕中不可见

4.stateUnchanged、StateHiddeng等的实际效果: 

实验一:页面B指定属性stateUnchanged,从页面A跳转至页面B,观察页面B的键盘状态。

页面A的状态: 显示软键盘

跳转后,页面B的状态:页面B保持页面A的键盘显示状态

实验二:页面B指定属性stateHidden属性,从页面跳转页面B,观察页面B的键盘状态。

页面A的状态: 不显示软键盘

跳转后,页面B的状态:页面B默认不显示键盘,在用户点击输入框获取焦点的时候,显示软键盘

实验三:页面B指定属性stateVisible属性,从页面跳转页面B,观察页面B的键盘状态。

页面A的状态: 不显示软键盘

跳转后,页面B的状态:页面B默认显示软键盘,点击Back键隐藏

日积月累:EditText软键盘的显示和隐藏的更多相关文章

  1. EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听

    软键盘显示和隐藏的监听: 注: mReplayRelativeLayout是EditText的父布局 //监听软键盘是否显示或隐藏 mReplayRelativeLayout.getViewTreeO ...

  2. Android 软键盘的显示和隐藏,这样操作就对了

    一.前言 如果有需要用到输入的地方,通常会有需要自动弹出或者收起软键盘的需求.开篇明义,本文会讲讲弹出和收起软键盘的一些细节,最终还会从源码进行分析. 想要操作软键盘,需要使用到 InputMetho ...

  3. android 软键盘的显示与隐藏问题的研究

    在android中,常常会和输入法的软件键盘交互.在Manifest文件中,系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式. 该属性提供了Activit ...

  4. android软键盘的显示和隐藏

    显示: InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.toggle ...

  5. Android EditText软键盘显示隐藏以及“监听”

    一.写此文章的起因 本人在做类似于微信.易信等这样的聊天软件时,遇到了一个问题.聊天界面最下面一般类似于如图1这样(这里只是显示了最下面部分,可以参考微信等),有输入文字的EditText和表情按钮等 ...

  6. Android手动控制软键盘的开启和关闭,判断软键盘是否显示;

    工具类,拿走就能用: import android.annotation.TargetApi; import android.app.Activity; import android.content. ...

  7. Android文本输入框(EditText)切换密码的显示与隐藏

    package cc.c; import android.app.Activity; import android.os.Bundle; import android.text.Selection; ...

  8. EditText 软键盘

    EditText 软键盘 package brother.eighteen.demoedittext; import android.content.Context; import android.t ...

  9. android制,点击EditText时刻,隐藏系统软键盘,显示光标

    由于项目中要用自己定义的随机键盘,所以必须得屏蔽系统软键盘,可是在4.0的測试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,可是 ...

随机推荐

  1. make文件中静态连接库在command里面的位置

    linux软件第一次调用动态连接库的时候要延迟几秒,怀疑在突然掉库的时候动态库加载耗费了时间,所以造成延时,遂改为静态库方式,原来的makefile文件是 testmac:         cp $( ...

  2. 开源消息中间件DotNetMQ

    由于这个开源项目对我这种中间件菜鸟很有帮助,因此,我将官方的说明文档翻译如下: Introduction In this article, I will introduce a new and ind ...

  3. Linux shell入门基础(二)

    二.shell对文本的操作 01.查看文本的命令 #cat /etc/passwd(并非对文本文件操作) #tail -5 /etc/passwd(查看末尾5行) #tail -f /var/log/ ...

  4. wildfly部署solr.war

    1.添加solr/home配置,有两种途径: 一个是修改solr.war包的web.xml,路径如下:solr-4.7.2.rar\WEB-INF\web.xml,添加如下内容:

  5. android SQLite使用SQLiteOpenHelper类对数据库进行增删查改

    一个简单的例子,当点击按钮时进行相应的操作,效果图如下: 项目代码如下: DatabaseHelper类 package com.example.sqlitedatebasetest; import ...

  6. Qt 数据库创建表失败原因之数据库关键字

    本人数据库新手,在创建表时出现问题,最后经查证,找出问题所在.下面的程序是部分节选,在创建数据库表的时候,起先使用的L24的CreateDB,经测试,一直输出 Create testResult Fa ...

  7. 学习OpenSeadragon之五(工具条toolbar与自定义按钮)

    OpenSeadragon简介:学习OpenSeadragon之一(一个显示多层图片的开源JS库) 一.工具条toolbar设置 OpenSeadragon为我们提供了现成的工具条toolBar,工具 ...

  8. storm-kafka教程

    一.原理介绍   本文内容参考:https://github.com/apache/storm/tree/master/external/storm-kafka#brokerhosts (一)使用st ...

  9. 自己动手写框架——IoC的实现

    先看看 IoC百度百科 优化过程 namespace Test { class Program { static void Main(string[] args) { //场景 某公司客服要回访一些客 ...

  10. C# 中显示实现接口

    接口的实现分为显示实现和隐式实现 用显示实现接口的目的就是为了,当一个类中实现多个具有相同方法的接口时,能够区分开来 在调用的时候,必须用接口调用. class Program { static vo ...