Android:ScrollView 不使用键盘滚动

Posted

技术标签:

【中文标题】Android:ScrollView 不使用键盘滚动【英文标题】:Android: ScrollView not scrolling with keyboard out 【发布时间】:2013-02-26 21:51:58 【问题描述】:

我有一个带有一些视图的布局,其中一个是 EditText。布局很容易适合一页,但是当软键盘退出时,布局不会滚动。 以下是我的布局回顾:

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

    <ScrollView
        android:id="@+id/ScrollView1"
        android:layout_
        android:layout_
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical" >

            <CheckBox/>

            <TextView/>

            <LinearLayout>
                <EditText>
                    <requestFocus />
                </EditText>
            </LinearLayout>

            <TextView/>

            <LinearLayout>
                <Spinner/>
            </LinearLayout>

        </LinearLayout>

    </ScrollView>

    <Button
        android:layout_alignParentBottom="true" />

</RelativeLayout>

在我的清单中我已经声明了属性:

android:windowSoftInputMode="adjustResize|stateHidden"

有谁知道它为什么不起作用以及如何确保它起作用?

提前致谢!

【问题讨论】:

对于 Android 5,请查看此相关帖子:Android - adjust scrollview when keyboard is up for android 5.0 (lollipop) 【参考方案1】:

我遇到了同样的问题,我在清单中检查了我的活动,它不起作用的原因是因为我没有使用这个属性:

android:windowSoftInputMode="adjustResize"

现在效果很好,不需要做额外的锚点。

【讨论】:

【参考方案2】:

好的,显然 ScrollView 的 android:layout_height 不能设置为 wrap_content。我将其设置为match_parent,并将android:layout_above 设置为页面底部的按钮。

不要问我为什么,但这解决了问题。

【讨论】:

layout_above 想要固定在屏幕底部的任何视图 如果底部没有固定视图怎么办? 如果 ScrollView 只占屏幕的一部分,则不起作用。如果您的活动底部有一个类似于页脚的布局,则此解决方案将不起作用。【参考方案3】:

在我的情况下,以上都不起作用。

我的主题中有item name="android:windowTranslucentStatus"&gt;true&lt;/item&gt;。通过在我的滚动视图所在的父布局中设置android:fitsSystemWindows="true" 来修复它。

【讨论】:

【参考方案4】:

android:windowSoftInputMode="stateHidden|adjustResize" 添加到您在AndroidManifest.xml 文件中的标签中。这将导致屏幕在显示软键盘后调整到左侧空间。因此,您将能够轻松滚动。

【讨论】:

【参考方案5】:

在我的情况下,在我 REMOVE

之前,上述任何解决方案都不起作用

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

在我的活动中,我使用该代码来获得全屏显示。也许在某些情况下,请尝试删除任何全屏设置以使上述任何解决方案都能正常工作。

【讨论】:

感谢您的解决方案帮助了我,我遇到了类似的问题,但我在 styles.xml 中添加了全屏【参考方案6】:

如果您的第一个片段滚动完美而第二个片段没有滚动,那么您应该使用第二个片段替换并执行以下操作

1.在ScrollView中添加

android:fillViewport="true"
android:fitsSystemWindows="true"

2.在Manifest中添加

android:windowSoftInputMode="adjustResize|stateVisible"

如果您添加片段,那么我的建议是您需要替换片段

【讨论】:

【参考方案7】:

在我的情况下,我必须从我的样式中删除以下属性才能使其正常工作。

<item name="android:windowFullscreen">true</item>

【讨论】:

按预期工作,谢谢。【参考方案8】:

我的问题在于 Horizo​​ntalScrollView。就我而言,我必须将 Horizo​​ntalScrollView 设置为:

android:layout_
android:layout_

然后删除:

 android:layout_above="@+id/closeButton"
 android:layout_below="@+id/logo"

在 AndroidManifest.xml 中,活动设置为:

android:windowSoftInputMode=""

我希望这可以帮助任何遇到这个奇怪错误的人。

【讨论】:

【参考方案9】:

在我的例子中,解决这个问题的方法是在底部设置一个缺失的约束。我的 ScrollView 有顶部、右侧和左侧约束,但没有底部约束。从四面八方限制之后,它开始与上面的textview重叠,这促使我尝试将高度设置为0dp,似乎解决了问题。

【讨论】:

【参考方案10】:

尝试将 ScrollView 设置为您的父布局。它对我来说就像魅力一样!

【讨论】:

【参考方案11】:
<activity 
    android:windowSoftInputMode="adjustResize"
>

在 android manifest 中试试这个 ..

【讨论】:

Ciprian in 2013已经给出了答案

以上是关于Android:ScrollView 不使用键盘滚动的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Android Scrollview 定位到末尾的正确方法

Android 点击空白或滑动时候关闭软键盘(有scrollview的坑)

Android:在键盘显示中,将 ScrollView 固定到底部

[Android UI界面] 软键盘覆盖edittext 使用ScrollView的详解、、高手快来吧