EditText软件盘显示和占用位置属性解析

在讲解EditText之前,先介绍一下如何查看android属性文档:

1.在SDK api中搜索android
2.在搜索结果的R.attr中

EditText软件盘显示和占用位置属性解析_第1张图片
Paste_Image.png

以上默认情况下,EditText有焦点,软件盘不弹出.但是如果EditText被ScrollView包裹,软件盘会弹出

focusable : Boolean that controls whether a view can take focus.
一个控件是否可以聚焦 ,这个主要应用在非触摸屏的android应用中

focusableInTouchMode : Boolean that controls whether a view can take focus while in touch mode.
当在触摸模式下,判断一个控件是否可以聚焦.
主要用在EditText中,因为软件盘会为拥有焦点的EditText输入.如果此值设置为false,键盘是不会弹出的.

windowSoftInputMode :定义了默认的软件盘输入状态
Defines the default soft input state that this window would like when it is displayed. Corresponds to softInputMode.Must be one or more (separated by '|') of the following constant values.

EditText软件盘显示和占用位置属性解析_第2张图片
Paste_Image.png
  • stateUnspecified: 不特别指定,用系统默认最好的,默认值.

  • stateUnchanged: 离开软件盘输入,不管最后是什么状态.

  • stateHidden: 使软件盘再合适的时候隐藏(当用户跳向别的页面) 默认应该就是这个值

  • stateAlwaysHidden: 软件盘一直隐藏,暂时看起来与stateHidden没发现什么区别,使用这两个属性,再ScrollView存在的情况下,软件盘不会默认弹出

  • stateVisible:使软件盘在合适的时候显示(使用这个属性,会显示软件盘,但是进入其他页面再返回默认就不显示了,只有点击后才会调起软件盘)

  • stateAlwaysVisable: 当窗口有输入焦点的时候,软件盘一直显示(进入其它页面,在返回焦点存在,软件盘还会存在)

  • adjustUnspecified:窗口的大小/盘调整没有被指定,系统将自动选择调整大小和 PAN模式,取决于窗口的内容是否有任何布局视图,可以滚动其内容。如果有这样的一个视图,然后将窗口调整大小,与假定的可调整大小的面积为软件盘空出地方

  • adjustResize:总是调整窗口大小:减少窗口区域去显示软件盘:实际效果是键盘覆盖内容,如果有ScrollView,就会将其包裹的内容向上移动,看到键入内容.

  • adjustPan:不会调整窗口大小,会已焦点位置移动(再EditTextView以上的整体向上移动),方便用户看到他们的键入内容.有没有scrollVIew效果都是一样的,是整体上移

  • adjustNothing:不会调整窗口大小和pan去为软件盘留位置,窗口不会调整他. 没有ScrollView和adjustResize一样效果,有的话也不会调整

默认会焦点位置移动,类似adjustPan效果
如果想要默认不显示软件盘,并且点击后输入内容显示,可以按以下设置:


下面为一个讲解触摸模式的文章:
http://www.th7.cn/Program/Android/201407/234672.shtml

你可能感兴趣的:(EditText软件盘显示和占用位置属性解析)