出现键盘时Scrollview不滚动

Posted

技术标签:

【中文标题】出现键盘时Scrollview不滚动【英文标题】:Scrollview does not scroll when keyboard appears 【发布时间】:2015-02-02 15:07:50 【问题描述】:

我的 RelativeLayout 中有一些 EditText,并在其底部对齐了一个按钮。当键盘弹出时,我希望我的布局调整大小(因此,我使用 android:windowSoftInputMode="adjustResize")并且还希望它可以滚动,因为在较小的屏幕上调整大小是不够的。

问题是我根本无法滚动!

我确实需要按钮留在屏幕底部。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="#FFF">

    <!-- some hidden RelativeLayouts, filling the whole screen -->

<RelativeLayout
        android:id="@+id/form_layout"
        android:layout_
        android:layout_>

    <ScrollView
        android:layout_ android:layout_
            android:fillViewport="true" android:layout_above="@+id/ok_btn">

        <RelativeLayout
        android:layout_
        android:layout_ android:background="#99000000" android:visibility="visible">

            <View
            android:id="@+id/shade"
            android:layout_
            android:layout_ android:layout_alignTop="@+id/logradouro1"
            android:background="#FFF" android:layout_marginTop="-30dp"/>

            <!-- some visible EditTexts and TextViews here -->

        </RelativeLayout>

    </ScrollView>

    <Button android:id="@+id/ok_btn"
            android:layout_
            android:layout_ android:background="@color/verdeBotao" android:text="Cadastrar"
            android:textColor="#FFF" android:layout_alignParentBottom="true"/>

</RelativeLayout>


</RelativeLayout>

下面是 2 个屏幕截图来说明正在发生的事情。请注意,当键盘启动时我无法滚动。 谢谢!

【问题讨论】:

【参考方案1】:

我正在发布与您的用户界面类似的内容。为底部的按钮设置一个 RelativeLayout。将重力设置为底部,您的按钮视图应该 android:layout_alignParentBottom="true"

<ScrollView
        android:layout_
        android:layout_
        android:layout_above="@+id/m_table_menu" >

        <LinearLayout
            android:id="@+id/layuserdetails"
            android:layout_
            android:layout_
            android:layout_marginTop="8dp"
            android:orientation="horizontal"
            android:padding="5dp" >

            Yourviewss......i guess edittexts 

        </LinearLayout>
    </ScrollView>

//可滚动按钮布局

 <RelativeLayout
        android:id="@+id/m_table_menu"
        android:layout_
        android:layout_
        android:gravity="bottom"
        android:padding="0dp" >

        <LinearLayout
            android:id="@+id/laysharepost"
            android:layout_
            android:layout_
            android:layout_alignParentBottom="true"
            android:gravity="bottom"
            android:orientation="vertical"
            android:padding="5dp" >

//replace textview with buttonview.. 
            <TextView
                android:id="@+id/share_tvcommentdone"
                android:layout_
                android:layout_
                android:layout_gravity="center"
                android:background="@drawable/button_selector"
                android:padding="10dp"
                android:text="POST"
                android:textColor="@android:color/white" />
        </LinearLayout>
    </RelativeLayout>

【讨论】:

你不使用 ScrollView 吗?我想我应该用它来处理小屏幕 我想我的问题与在 ScrollView 的视图中设置 android:layout_alignParentBottom="true" 有关 为什么不将线性布局作为根元素。试一试。

以上是关于出现键盘时Scrollview不滚动的主要内容,如果未能解决你的问题,请参考以下文章

Fragment中的ScrollView在软键盘出现时不滚动

Android开发里遇到键盘出现时ScrollView不能滚动,怎么解决

出现键盘时滚动到 SwiftUI Scrollview 的最底部

Android:ScrollView 不使用键盘滚动

滚动其子uiscrollview时如何防止滚动uiscrollview?

以编程方式滚动 ScrollView,其中包含 StackView