弹出软键盘时页面滚动

Lee*_*fin 88 android android-keypad android-intent android-layout android-scrollview

我有一个<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>
Run Code Online (Sandbox Code Playgroud)

如上所示,简单布局包含三个输入字段和一个"确定"按钮.

我使用上面的布局运行我的应用程序,当我点击第一个输入字段(@+id/input_one)时,软键盘将从屏幕底部弹出,它隐藏第三个输入字段和"确定"按钮.

自从我使用以来<ScrollView>,我想我可以向上滚动页面以查看第三个输入字段和软键盘隐藏的"确定"按钮,但页面不可滚动.为什么?如何摆脱它?基本上,我想看到每个输入字段和"确定"按钮,甚至软键盘弹出.

Lee*_*fin 117

我在定义以下属性固定我的问题<activity>AndroidManifest.xml中

android:windowSoftInputMode="stateVisible|adjustResize"
Run Code Online (Sandbox Code Playgroud)

  • 你不需要stateVisible.这将使应用程序启动时出现软键盘,即使用户没有专注于EditText (9认同)

qwe*_*ret 36

好的,我现在已经搜索了几个小时来找到问题,我找到了.

没有任何变化喜欢fillViewport="true"android:windowSoftInputMode="adjustResize"帮助我.

我使用的是Android 4.4,这是一个很大的错误:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
Run Code Online (Sandbox Code Playgroud)

不知何故,当SoftKeyboard可见时,全屏主题会阻止ScrollViews滚动.

目前,我最终使用了这个:

android:theme="@android:style/Theme.Black.NoTitleBar
Run Code Online (Sandbox Code Playgroud)

我不知道如何摆脱顶部系统栏的时间和电池显示,但至少我遇到了问题.

希望这有助于其他有同样问题的人.

编辑:我的案例有一点解决方法,所以我在这里发布:

我不确定这是否适合你,但它肯定会帮助你理解,并清除一些事情.

EDIT2: 是另一个很好的主题,可以帮助您朝着正确的方向前进,甚至解决您的问题.


Jac*_*lla 16

对我来说唯一有用的东西就是放入清单中的活动这个属性:

android:windowSoftInputMode="stateHidden|adjustPan"
Run Code Online (Sandbox Code Playgroud)

打开活动时不显示键盘且不与视图底部重叠.


小智 12

在没有全屏模式下将这个放在你的Manifest中

android:windowSoftInputMode="stateVisible|adjustPan" 
Run Code Online (Sandbox Code Playgroud)

在你的清单中

<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>
Run Code Online (Sandbox Code Playgroud)


Moh*_*san 11

在您的Manifestdefine windowSoftInputMode属性中 <activity android:name=".MyActivity" android:windowSoftInputMode="adjustNothing">

  • `Manfist` :) :) (7认同)
  • `adjustNothing`不是有效值. (2认同)
  • @JacobRas 请检查此链接:http://developer.android.com/reference/android/R.attr.html#windowSoftInputMode 它的值为“adjustNothing” :) (2认同)
  • 我有同样的麻烦,但是scrollview不能与adjustNothing一起使用:( (2认同)

小智 7

在活动代码下的Android Manifest文件中添加以下代码行

android:windowSoftInputMode="adjustResize"
Run Code Online (Sandbox Code Playgroud)


Rav*_*342 6

看看这个。

<activity android:name=".Calculator"
    android:windowSoftInputMode="stateHidden|adjustResize" 
    android:theme="@android:style/Theme.Black.NoTitleBar">
</activity>
Run Code Online (Sandbox Code Playgroud)