在讲解EditText之前,先介绍一下如何查看android属性文档:
1.在SDK api中搜索android
2.在搜索结果的R.attr中
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
以上默认情况下,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.
stateUnspecified: 不特别指定,用系统默认最好的,默认值.
stateUnchanged: 离开软件盘输入,不管最后是什么状态.
stateHidden: 使软件盘再合适的时候隐藏(当用户跳向别的页面) 默认应该就是这个值
stateAlwaysHidden: 软件盘一直隐藏,暂时看起来与stateHidden没发现什么区别,使用这两个属性,再ScrollView存在的情况下,软件盘不会默认弹出
stateVisible:使软件盘在合适的时候显示(使用这个属性,会显示软件盘,但是进入其他页面再返回默认就不显示了,只有点击后才会调起软件盘)
stateAlwaysVisable: 当窗口有输入焦点的时候,软件盘一直显示(进入其它页面,在返回焦点存在,软件盘还会存在)
adjustUnspecified:窗口的大小/盘调整没有被指定,系统将自动选择调整大小和 PAN模式,取决于窗口的内容是否有任何布局视图,可以滚动其内容。如果有这样的一个视图,然后将窗口调整大小,与假定的可调整大小的面积为软件盘空出地方
adjustResize:总是调整窗口大小:减少窗口区域去显示软件盘:实际效果是键盘覆盖内容,如果有ScrollView,就会将其包裹的内容向上移动,看到键入内容.
adjustPan:不会调整窗口大小,会已焦点位置移动(再EditTextView以上的整体向上移动),方便用户看到他们的键入内容.有没有scrollVIew效果都是一样的,是整体上移
adjustNothing:不会调整窗口大小和pan去为软件盘留位置,窗口不会调整他. 没有ScrollView和adjustResize一样效果,有的话也不会调整
默认会焦点位置移动,类似adjustPan效果
如果想要默认不显示软件盘,并且点击后输入内容显示,可以按以下设置:
<activity
android:name=".MainrActivity"
android:label="@string/title_activity_main"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize"></activity>
下面为一个讲解触摸模式的文章:
http://www.th7.cn/Program/Android/201407/234672.shtml