关于EditText的焦点和软键盘开关的一些总结
来源:互联网 发布:网络用语m2是什么意思 编辑:程序博客网 时间:2024/04/29 21:53
一. 相关API
android:windowSoftInputMode属性一共有9个取值,分别是:
stateUnspecified,stateUnchanged,stateHidden,stateAlwaysHidden,stateVisible,stateAlwaysVisible,adjustUnspecified,adjustResize,adjustPan。
android:fitsSystemWindows="true"
(1).stateUnspecified(未指定状态)
中文意思是未指定状态,当我们没有设置android:windowSoftInputMode属性的时候,软件默认采用的就是这种交互方式(stateUnspecified),系统会根据界面采取相应的软键盘的显示模式,比如,当界面上只有文本和按钮的时候,软键盘就不会自动弹出,因为没有输入的必要。那么,当界面上出现了获取了焦点的输入框的时候,软键盘会不会自动的弹出呢?这个还真不一定!比如,在下面的这个界面布局中,软键盘并不会自动弹出(因为虽然获取了焦点但是不确定是要否要输入)。
代码1(不会自动弹出软键盘,除非点击了EditText)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="toOther" android:text="跳转" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入内容" /> </LinearLayout></LinearLayout>
代码2(自动弹出软键盘)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="toOther" android:focusable="true" android:text="跳转" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入内容"/> </LinearLayout> </ScrollView></LinearLayout>
就是说,默认的,在这种界面情况下,系统并不确定用户是否需要软键盘,因此不会自动弹出。但是,为什么说不一定呢?这是因为,如果我们在这个布局的外面,包裹上一个
ScrollView,软键盘就会自动的弹出来了!这是如果要避免这种情况就是在布局中其他控件获得焦点,或者EditText失去焦点(设置focusable,或者Activity中设置
android:windowSoftInputMode="stateHidden")
2.stateUnchanged(当前页面的软键盘跟上一个页面的软键盘保持一样的状态)
中文的意思就是状态不改变的意思,我们应该怎么理解这句话呢?其实很好理解,就是说,当前界面的软键盘状态,取决于上一个界面的软键盘状态。举个例子,假如当前界面键盘是隐藏的,那么跳转之后的界面,软键盘也是隐藏的;如果当前界面是显示的,那么跳转之后的界面,软键盘也是显示状态。
3.stateHidden
顾名思义,如果我们设置了这个属性,那么键盘状态一定是隐藏的,不管上个界面什么状态,也不管当前界面有没有输入的需求,反正就是不显示。因此,我们可以设置这个属性,来控制软键盘不自动的弹出。
4.stateAlwaysHidden
不确定跟上面的有什么区别,暂时效果一样
5.stateVisible
设置为这个属性,可以将软键盘召唤出来,即使在界面上没有输入框的情况下也可以强制召唤出来(什么都不用点,一切到设置这个属性的页面,软键盘就弹出来了)
6.stateAlwaysVisible
不确定跟上面的有什么区别,暂时效果一样
7.adjustUnspecified(设置软键盘与软件的显示内容之间的显示关系)
当我们没有设置这个值的时候,这个选项也是默认的设置模式。
(1)如果界面里面有可以滚动的控件,比如ScrowView,系统会减小可以滚动的界面的大小,从而保证即使软键盘显示出来了,也能够看到所有的内容。
(2)如果布局里面没有滚动的控件,那么软键盘可能就会盖住一些内容,我们从下面的图中可以看出差别。
没有滚动控件,软键盘下面的布局都被遮挡住了,若想修改,只能隐藏软键盘,然后选择。而且,重点注意一下上面的布局,当我们选择的输入框偏下的时候,上面的标题栏和布局被软键盘顶上去了。记住这个特征,因为后面有个属性和这个的效果不一样。
(其实设置这个adjustUnspecified貌似没什么软用,而且又没有scrollView该被遮挡还是会被遮挡,并没有什么变化)
8.adjustResize如果不设置默认选择edittext的时候如果被遮挡了,就会网上顶 ,如果设置了,不会往上顶(原来布局是什么样,就是什么样),但是如果套了个scrollView就跟没设置的效果一样
9.adjustPan
如果设置为这个属性,那么Activity的屏幕大小并不会调整来保证软键盘的空间,而是采取了另外一种策略,系统会通过布局的移动,来保证用户要进行输入的输入框肯定在用户的失业范围里面,从而让用户可以看到自己输入的内容。对于没有滚动控件的布局来说,这个其实就是默认的设置,如果我们选择的位置偏下,上面的标题栏和部分控件会被顶上去。
但是对于有滚动控件的布局来说,则不太一样,我们看下面的效果图。
如果有滚动的控件包裹,设置了这个属性,就不能滑动页面(相当于什么都不设置的没有滚动控件的布局)
- 关于EditText的焦点和软键盘开关的一些总结
- 关于EditText和软键盘的一些设定
- [android]editText和软键盘的一些总结
- 关于EditText获取焦点,隐藏软键盘的问题
- 关于ListView中EditText点击弹出软键盘及软键盘弹出后的焦点问题
- android 解决EditText无法失去焦点和失去焦点后隐藏软键盘的问题
- EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听
- 关于ListView中EditText在软键盘弹出后的焦点问题
- 关于EditText获取焦点,是否弹出软键盘的那些事
- EditText 的一些软键盘属性和回调
- android软键盘的隐藏以及Edittext的焦点问题
- Android EditText 软键盘和焦点问题
- EditText抢焦点,禁止软键盘弹出的终极招
- android强制隐藏软键盘以及取消EditText的焦点
- 关于ListView和EditText的焦点问题
- Android 关于EditText软键盘的用法
- 关于edittext 输入的软键盘处理
- 聊天记录,踩的坑:设置EditText焦点;EditText软键盘和recyclerview的交互;SpannableStringBuilder的使用;ClickableSpan失效;软键盘挡住edi
- LeetCode:Factorial Trailing Zeroes
- HTML5游戏制作之路_06_egret文本及相关属性
- Tomcat虚拟路径的配置
- C++面试题答案总结
- Hashtable原理解析
- 关于EditText的焦点和软键盘开关的一些总结
- iOS status bar的详细研究
- [转] linux下使用mmap实现进程间共享内存
- [leetcode 203] Remove Linked List Elements
- 8. Spring MVC4.1-ContentNegotiatingViewResolver
- AVL树初学笔记
- Valid Anagram --Nice
- group 分组 查询 栏目下文章 的总数 having where区别
- 安装BeautifulSoup