且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

android EditText被键盘遮住的问题

更新时间:2022-03-20 14:48:41

发现这个问题后从网上找了找, 
1)说是在AdnroidMainfest.xml中对应的activtiy 设置属性Android:windowSoftInputMode=”stateVisible|adjustPan”试了一下不行, 
2)后来在layout中用<ScrollView  替换了***的<LinearLayout 就可以了 

第一种的属性是Android 1.5之后才加上的

 


后来发现android:windowSoftInputMode="stateHidden|adjustResize"这个东西确实起作用,他的作用是隐藏键盘, 
而想要EditText被顶上去的话,还是得用ScrollView 
另外我看到有的朋友用在IME类 

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 实例化输入法控制对象,通过hideSoftInputFromWindow来控制,其中第一个参数绑定的为需要隐藏输入法的EditText对象,比如imm.hideSoftInputFromWindow(etAndroid123.getWindowToken(), 0); 
该方法反正我用了之后在我这里不起作用。 

总结一下 
1、首先让键盘不弹出使用了windowSoftInputMode属性 
2、然后让EditText能够被顶上去,使用<ScrollView 

 

android:windowSoftInputMode属性使用
 

在AndroidManifest.xml文件中的android:windowSoftInputMode属性使用 

The AndroidManifest.xml File

 <activity android:windowSoftInputMode=["stateUnspecified",

                                    "stateUnchanged", "stateHidden",

                                    "stateAlwaysHidden", "stateVisible",

                                    "stateAlwaysVisible", "adjustUnspecified",

                                    "adjustResize", "adjustPan"] …… >

</activity>

attributes:

android:windowSoftInputMode

活动的主窗口如何与包含屏幕上的软键盘窗口交互。这个属性的设置将会影响两件事情:

1>     软键盘的状态——是否它是隐藏或显示——当活动(Activity)成为用户关注的焦点。

2>     活动的主窗口调整——是否减少活动主窗口大小以便腾出空间放软键盘或是否当活动窗口的部分被软键盘覆盖时它的内容的当前焦点是可见的。

它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。在任一组设置多个值——多个”state…”values,例如&mdash有未定义的结果。各个值之间用|分开。例如: <activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >

在这设置的值(除"stateUnspecified"和"adjustUnspecified"以外)将覆盖在主题中设置的值

值 描述
 
"stateUnspecified" 软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。这个是为了软件盘行为默认的设置。
 
"stateUnchanged" 软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。
 
"stateHidden" 当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
 
"stateAlwaysHidden" 软键盘总是被隐藏的,当该Activity主窗口获取焦点时。
 
"stateVisible" 软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。
 
"stateAlwaysVisible" 当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。
 
"adjustUnspecified" 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。
 
"adjustResize" 该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间。
 
"adjustPan" 该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。