EditText 比较重要的属性和方法总结
(1)android:windowSoftInputMode属性详解
activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。
这个属性能影响两件事情:
1)当有焦点产生时,软键盘是隐藏还是显示
2)是否减少活动主窗口大小以便腾出空间放软键盘
它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。在任一组设置多个值——多个”state…”values,例如&mdash有未定义的结果。
各个值之间用|分开。
例如:<activity android:windowSoftInputMode="stateVisible|adjustResize". . .>
在这设置的值(除"stateUnspecified"和"adjustUnspecified"以外)将覆盖在主题中设置的值。
各值的含义:
1)stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
2)stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
3)stateHidden:用户选择activity时,软键盘总是被隐藏
4)stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
5)stateVisible:软键盘通常是可见的
6)stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
7)adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
8)adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
9)adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
(2)如何有效的取消EditText自动去焦问题
EditText默认就会自动获取焦点。那么如何取消这个默认行为呢?通过监听软键盘事件和调用 clearFouse()方法,都不能取消聚焦。
解决之道:在EditText的父级控件中找一个,设置成
android:focusable="true"
android:focusableInTouchMode="true"
这样,就把EditText默认的行为截断了!
(3)EditText 的TextWatcher()监听(软硬键盘都可以)
监听输入字符变化等情况,根据字符变化情况做出相应的操作,如当输入字符数达到允许的最大值时,进行提示。
(4)其他比较重要的属性
android:background="@null"//透明背景
android:autoText //自动拼写帮助
android:drawable(left、right、top、buttom)//添加图片
android:ellipsize //设置当文字过长时,该控件该如何显示
父类:View 的属性
android:saveEnabled="true" //属性设置是否在窗口冻结时(如旋转屏幕)保存View的数据,默认为true,但是前提是你需要设置
id才能自动保存
android:selectAllOnFocus="true"//当前组件在得到焦点的时候,是否自动选取该组件内的所有的文本内容