我在一个RelativeLayout中有几个设置了align bottom属性的元素,当软键盘弹出时,这些元素被软键盘遮盖了。
我希望它们能够往上移,以便在屏幕空间足够的情况下显示在键盘上方,或者使键盘上方的区域可滚动,用户仍然可以看到这些元素。
有关于如何解决这个问题的任何想法吗?
我在一个RelativeLayout中有几个设置了align bottom属性的元素,当软键盘弹出时,这些元素被软键盘遮盖了。
我希望它们能够往上移,以便在屏幕空间足够的情况下显示在键盘上方,或者使键盘上方的区域可滚动,用户仍然可以看到这些元素。
有关于如何解决这个问题的任何想法吗?
是的,请查看Android开发者网站上的这篇文章,其中描述了框架如何处理软键盘的出现。
android:windowSoftInputMode
属性可用于指定每个活动的操作:是否调整布局大小或滚动等。
你也可以在onCreate()
方法中使用这段代码:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
调整您的清单文件中的活动配置,例如:
android:windowSoftInputMode="adjustResize"
或者
在活动类中的 onCreate()
方法中进行更改,例如:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
在AndroidManifest.xml文件中添加您的活动:
android:windowSoftInputMode="adjustPan|adjustResize"
我在我的布局中使用了ScrollView,遇到了类似的问题。当我尝试选择EditText中的文本时,带有Copy/Cut/Paste操作的工具栏会随着下面的代码向上移动,但它不会重新调整布局大小。
android:windowSoftInputMode="adjustPan"
通过以下修改:
AndroidManifest.xml
android:windowSoftInputMode="stateVisible|adjustResize"
在activity的style中的style.xml文件中
true
这对我很有效。
android:windowSoftInputMode="adjustResize"
对于ScrollView中的RelativeLayout,请设置:
android:layout_gravity="center" or android:layout_gravity="bottom"
一切都会好的
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
并且在其onCreate方法中处理碎片
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
滚动屏幕有3个步骤。
android:windowSoftInputMode="adjustResize"
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:background="@drawable/bg" android:layout_height="match_parent" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_gravity="center" > <TextView /> ......... <TextView /> <EditText > <requestFocus /> </EditText> <Button /> </RelativeLayout> </ScrollView>
P.S.别忘了在父RelativeLayout中添加android:layout_gravity="center"。
<activity name="ActivityName"
android:windowSoftInputMode="adjustResize">
...
</activity>
AndroidManifest.xml
中添加以下行。android:windowSoftInputMode="stateHidden|adjustPan"
<activity
android:name=".MainActivity"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateHidden|adjustPan">
</activity>