Page scroll when soft keyboard popped up
我有一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_scrollview" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:id="@+id/input_one" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_gravity="center" android:inputType="number"> <EditText android:id="@+id/input_two" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_gravity="center" android:inputType="number"> <EditText android:id="@+id/input_three" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_gravity="center" android:inputType="number"> <Button android:id="@+id/ok_btn" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="20dp" android:text="@string/ok_str" /> </LinearLayout> </ScrollView> |
如上所示,简单布局包含三个输入字段和一个"确定"按钮。
我使用上面的布局运行我的应用程序,当我点击第一个输入字段(
由于我使用
我通过在AndroidManifest.xml的
1 | android:windowSoftInputMode="stateVisible|adjustResize" |
好的,我现在已经搜索了几个小时来找到问题,我找到了。
像
我使用的是Android 4.4,这是一个很大的错误:
1 | android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" |
不知何故,当SoftKeyboard可见时,全屏主题会阻止ScrollViews滚动。
目前,我最终使用了这个:
1 | android:theme="@android:style/Theme.Black.NoTitleBar |
我不知道如何摆脱顶部系统栏的时间和电池显示,但至少我遇到了问题。
希望这有助于其他有同样问题的人。
编辑:我的案例有一点解决方法,所以我在这里发布:
我不确定这是否适合你,但它肯定会帮助你理解,并清除一些事情。
EDIT2:这是另一个很好的主题,可以帮助您朝着正确的方向前进,甚至解决您的问题。
对我来说唯一有用的东西就是放入清单中的活动这个属性:
1 | android:windowSoftInputMode="stateHidden|adjustPan" |
打开活动时不显示键盘且不与视图底部重叠。
在没有全屏模式下将这个放在你的Manifest中
1 | android:windowSoftInputMode="stateVisible|adjustPan" |
在你的清单中
1 2 3 4 5 6 7 8 9 10 | <activity android:windowSoftInputMode="stateVisible|adjustPan" android:name="com.example.patronusgps.MainActivity" android:label="@string/app_name"> <intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> |
在
在活动代码下的Android Manifest文件中添加以下代码行
1 | android:windowSoftInputMode="adjustResize" |
看看这个。
1 | </activity> |
这对我有用:
1 | android:windowSoftInputMode="adjustPan" |
您可以尝试使用以下代码来解决您的问题:
1 2 3 4 5 6 7 | <activity android:name=".DonateNow" android:label="@string/title_activity_donate_now" android:screenOrientation="portrait" android:theme="@style/AppTheme" android:windowSoftInputMode="stateVisible|adjustPan"> </activity> |
此外,如果您想以编程方式执行此操作,只需将以下行添加到活动的onCreate中。
1 2 3 | getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE ); |