我有<ScrollView>
布局:
<?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>
如上所示,简单布局包含三个输入字段和一个“确定”按钮。
我使用上面的布局运行我的应用程序,当我点击第一个输入字段(@+id/input_one
)时,软键盘将从屏幕底部弹出,隐藏第3个输入字段和“确定”按钮。
由于我使用<ScrollView>
,我认为我可以向上滚动页面以查看软键盘隐藏的第3个输入字段和“确定”按钮,但页面不可滚动。为什么?如何摆脱它? 基本上,我希望看到每个输入字段和“确定”按钮,甚至弹出软键盘。
答案 0 :(得分:111)
我通过在 AndroidManifest.xml
的<activity>
中定义以下属性来解决问题
android:windowSoftInputMode="stateVisible|adjustResize"
答案 1 :(得分:36)
好的,我现在已经搜索了几个小时来找到问题,我找到了它。
fillViewport="true"
或android:windowSoftInputMode="adjustResize"
等所有变化都没有帮助我。
我使用Android 4.4,这是大错误:
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
不知何故,当SoftKeyboard可见时,全屏主题会阻止ScrollViews滚动。
目前,我最终使用了这个:
android:theme="@android:style/Theme.Black.NoTitleBar
我不知道如何摆脱顶级系统栏的时间和电池显示,但至少我遇到了问题。
希望这可以帮助那些遇到同样问题的人。
编辑:我的案例有一些解决方法,所以我发布了here:
我不确定这是否对您有用,但它肯定会帮助您理解并澄清一些事情。
EDIT2: Here是另一个很好的主题,它可以帮助您朝着正确的方向前进,甚至可以解决您的问题。
答案 2 :(得分:15)
对我来说,唯一可行的是将该属性放入清单中的活动:
android:windowSoftInputMode="stateHidden|adjustPan"
打开活动时不显示键盘,并且不与视图底部重叠。
答案 3 :(得分:11)
在您的Manifest
定义windowSoftInputMode
媒体资源中
<activity android:name=".MyActivity" android:windowSoftInputMode="adjustNothing">
答案 4 :(得分:9)
在无全屏模式
中将此内容放入您的Manifest中android:windowSoftInputMode="stateVisible|adjustPan"
你的清单中的
<activity
android:windowSoftInputMode="stateVisible|adjustPan"
android:name="com.example.patronusgps.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 5 :(得分:7)
在活动代码
下的Android Manifest文件中添加以下代码行ORDER BY
答案 6 :(得分:4)
看看这个。
<activity android:name=".Calculator" android:windowSoftInputMode="stateHidden|adjustResize" android:theme="@android:style/Theme.Black.NoTitleBar"></activity>
答案 7 :(得分:2)
这对我有用:
android:windowSoftInputMode="adjustPan"
答案 8 :(得分:0)
您可以尝试使用以下代码来解决问题:
<activity
android:name=".DonateNow"
android:label="@string/title_activity_donate_now"
android:screenOrientation="portrait"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateVisible|adjustPan">
</activity>
答案 9 :(得分:0)
如果您要以编程方式执行此操作,只需将以下行添加到活动的onCreate中即可。
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE |
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE );
答案 10 :(得分:0)
我尝试过的最简单的答案就是删除您的代码,使活动全屏显示。我有一个类似的代码,它使我的活动全屏显示:
如果(Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT){
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
我刚刚删除了我的代码,它可以正常工作,尽管如果您想在全屏模式下实现此目的,则必须尝试其他方法