【问题标题】:Keyboard hides EditText inside a ScrollView in android?键盘在 android 的 ScrollView 内隐藏 EditText?
【发布时间】:2025-12-09 07:35:01
【问题描述】:

我嵌套了 LinearLayouts,其中一个在 ScrollView 中有一组垂直 EditText。问题每次我点击其中一个 EditText 并且 android 中的键盘出现一半的 EditText 消失,如果我在第一个 Edit Text 中写入,我什至看不到它或滚动到它。

我尝试过在 * 中提到的不同解决方案,例如添加 android:windowSoftInputMode="adjustPan|adjustResize",但无济于事。

这是我的 MainActivity.xml

 LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <ImageView
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/clac"
        android:scaleType="centerCrop"
        android:layout_gravity="center"
        />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"
        android:layout_marginTop="16dp"
        >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Letter Grade"
            android:textSize="15sp"

            />
        <TextView

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Credit Hours"
            android:textSize="15sp"
            android:layout_marginLeft="60dp"
            />
    </LinearLayout>
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:focusable="true"
        android:focusableInTouchMode="true">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:id="@+id/inputform">

    <LinearLayout

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
android:layout_gravity="center"

        >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:orientation="vertical">


            <EditText
                android:layout_marginTop="10dp"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/crs1" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/crs2" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/crs3" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/crs4" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/crs5" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/crs6" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/crs7" />

        </LinearLayout>





        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="64dp"
            android:orientation="vertical"
            >

            <EditText
                android:layout_marginTop="10dp"
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/credit1" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/credit2" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/credit3" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/credit4" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/credit5" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/credit6" />
            <EditText
                android:gravity="center"
                android:layout_height="wrap_content"
                android:layout_width="48dp"
                android:layout_gravity="center"
                android:id="@+id/credit7" />

        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        </LinearLayout>
    </LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="28dp"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Current GPA"
        android:layout_marginLeft="20dp"/>
    <EditText

        android:layout_height="wrap_content"
        android:layout_width="48dp"
        android:layout_marginLeft="5dp"
        android:id="@+id/currentgpa"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Taken Hours"
        android:layout_marginLeft="20dp"/>
    <EditText

        android:layout_height="wrap_content"
        android:layout_width="48dp"
        android:layout_marginLeft="8dp"
        android:id="@+id/currenthours"/>

</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="16dp">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Reset"
        android:onClick="clearForm"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Calculate"
        android:onClick="Calculate"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="GPA"
        android:layout_marginLeft="30dp"
        android:id="@+id/gpa"/>

</LinearLayout>

</LinearLayout>
</ScrollView>
</LinearLayout>

感谢您的帮助。

【问题讨论】:

  • 将 android:windowSoftInputMode="adjustPan 添加到 mainfest 解决了 EditText 隐藏的问题,但是 scrollView 不再起作用了。

标签: android android-layout android-studio scrollview android-5.1.1-lollipop


【解决方案1】:

根据您的问题,在您的活动清单中使用以下内容

<activity android:windowSoftInputMode="adjustPan"> </activity>

调整盘

Activity 的主窗口没有调整大小来为软键盘腾出空间。 有关这方面的更多信息,请访问

http://developer.android.com/guide/topics/manifest/activity-element.html

【讨论】:

  • 感谢您的回答。但是我已经尝试过了,并且 EditText 消失的问题得到了解决,但是出现了另一个问题,那就是 ScrollView 不再起作用了。
  • 其实是你的xml问题,这就是为什么滚动不出现
  • 那么如何解决这个xml问题呢?您可以看到滚动视图被包裹在 LinearLayout 中但是问题仍然存在?!
【解决方案2】:

您只在清单文件中声明 android:windowSoftInputMode="adjustPan" 从清单中删除 adjustResize

【讨论】:

    【解决方案3】:

    这是因为你的按钮布局包含在滚动视图中,所以当键盘出现时,按钮布局会占用一些空间。您可以像这样更改布局:(将windowSoftInputMode 设置为adjustPan

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
    
        <ImageView
            android:id="@+id/img"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp"
            android:scaleType="centerCrop"
            android:src="@mipmap/ic_launcher" />
    
        <LinearLayout
            android:id="@+id/title"
            android:layout_below="@id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="16dp"
            android:orientation="horizontal">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Letter Grade"
                android:textSize="15sp"
    
                />
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="60dp"
                android:text="Credit Hours"
                android:textSize="15sp" />
        </LinearLayout>
    
        <LinearLayout
            android:id="@+id/buttons"
            android:layout_alignParentBottom="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="16dp">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="clearForm"
                android:text="Reset" />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="Calculate"
                android:text="Calculate" />
    
            <TextView
                android:id="@+id/gpa"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:text="GPA" />
    
        </LinearLayout>
    
        <ScrollView
            android:id="@+id/scrollview"
            android:layout_below="@id/title"
            android:layout_above="@id/buttons"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            android:focusable="true"
            android:focusableInTouchMode="true">
    
            <LinearLayout
                android:id="@+id/inputform"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:orientation="vertical">
    
                <LinearLayout
    
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:orientation="horizontal"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
    
                        android:orientation="vertical">
    
    
                        <EditText
                            android:id="@+id/crs1"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:layout_marginTop="10dp"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/crs2"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/crs3"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/crs4"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/crs5"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/crs6"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/crs7"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                    </LinearLayout>
    
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="64dp"
                        android:orientation="vertical">
    
                        <EditText
                            android:id="@+id/credit1"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:layout_marginTop="10dp"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/credit2"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/credit3"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/credit4"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/credit5"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/credit6"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                        <EditText
                            android:id="@+id/credit7"
                            android:layout_width="48dp"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:gravity="center" />
    
                    </LinearLayout>
    
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">
    
                    </LinearLayout>
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="28dp"
                    android:orientation="horizontal">
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="20dp"
                        android:text="Current GPA" />
    
                    <EditText
    
                        android:id="@+id/currentgpa"
                        android:layout_width="48dp"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="5dp" />
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="20dp"
                        android:text="Taken Hours" />
    
                    <EditText
    
                        android:id="@+id/currenthours"
                        android:layout_width="48dp"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="8dp" />
    
                </LinearLayout>
    
    
    
            </LinearLayout>
        </ScrollView>
    
    </RelativeLayout>
    

    【讨论】:

      【解决方案4】:

      我在我的设备上构建您的代码并在清单文件中添加 android:windowSoftInputMode="adjustPan"in 帮助

      在你的 xml 文件中

      某事某事

         <ScrollView
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:fillViewport="true"
          android:focusable="true"
          android:gravity="center_horizontal"
          android:focusableInTouchMode="true">
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:gravity="center_horizontal"
              android:id="@+id/inputform"
              >
      
              <LinearLayout
      
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="horizontal"
      
                  >
      

      某事某事

      我刚刚在谷歌搜索“scrollview cut edittext”并给出了答案。你是程序员,必须自己做;)

      【讨论】:

      • 是的,但是你可以看到 ScorllView 不再工作了。
      • 这是你的 xml 文件错误
      • 谢谢,但是如何解决呢?!
      • 再次检查我的答案。
      • 我猜你也想让edittext只有单行,所以xml中有一个同名的参数。