Android输入框控件EditText与软键盘之间的恩恩怨怨
2016-03-25 本文已影响3383人
IT枫
进入含有输入框控件的界面,系统默认弹出软键盘。
根本原因属性focusableInTouchMode惹的祸。
该属性的意思为触屏模式下获取焦点,手机基本上都是触屏的,当然也有非触屏的TV。
默认情况下EditText值为true
android:focusableInTouchMode="true"
其他控件默认情况值为False
android:focusableInTouchMode="fasle"
导致进入界面时EditText获取到焦点,弹出软键盘。
如何做到不弹出软键盘?
- 1通过设置父控件属性值
android:focusableInTouchMode="true" - 2位置在EditText之前的控件设置属性
android:focusableInTouchMode="true" - 3设置EditText属性值
android:focusableInTouchMode="fasle"
需要注意<requestFocus />这个标签
当EditText控件添加了该标签,导致前两种方式失效,进入界面依然弹出软键盘!!!
<EditText ...>
//请求焦点标签的设置
<requestFocus android:layout_width="wrap_content"/>
</EditText>
屏蔽EditText输入功能,点击EditText不弹出软键盘,而触发其他操作。
设置EditText属性
android:focusable="false"
使EditText不可获取焦点,达到触摸或点击无反应。
软键盘遮挡EditText问题
输入框在屏幕底部时,完全被软键盘遮挡,解决办法,在整体布局之外增加ScrollView
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ScrollView>