Android在滚动时修复了滚动视图中的背景图像

Posted

技术标签:

【中文标题】Android在滚动时修复了滚动视图中的背景图像【英文标题】:Android fixed background image in scrollview while scrolling 【发布时间】:2016-02-08 08:02:08 【问题描述】:

我有一种情况,我需要一个滚动视图来拥有一个在移动时不应该与它的父级一起滚动的背景图像。在你们任何人建议我设置背景图像的链接之前,我已经尝试过但它不起作用。

整个故事是这样的:我有一个带有片段的活动,这些片段有自己的背景和一些输入字段。聚焦输入字段时,会出现键盘并挤压背景图像。为此,我在滚动视图的背景上放置了一张图片,解决了我挤压背景的问题,但引发了另一个担忧,即背景图片在滚动父滚动视图时应该保持静态。

你们中的任何人可能建议的第二个解决方案是设置我的活动背景,而不是使用滚动视图。没错,但为此我必须制作一个带有主题背景的样式元素,它在转换不同的片段时显得很奇怪,而且当我有很多代码和片段要向前和向后移动时它会增加开销。

这就是我卡住的地方。我已经浏览了下面的链接,如果您只想知道我是否尝试过。

link1 link2 link3 ...等等

下面是我用于片段的布局(全部以编程方式完成)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/top_layout"
android:layout_
android:layout_
android:orientation="horizontal" >

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_
    android:layout_
    android:fillViewport="true"
    android:scrollbars="none" >

    <FrameLayout
        android:layout_
        android:layout_ >

        <ImageView
            android:id="@+id/backgroundView"
            android:layout_
            android:layout_
            android:contentDescription="@string/app_name"
            android:scaleType="fitXY" />

        <LinearLayout
            android:id="@+id/parent_view"
            android:layout_
            android:layout_
            android:orientation="vertical" >
        </LinearLayout>
    </FrameLayout>
</ScrollView>
</LinearLayout>

因此,如果你们有任何更好的解决方案,请记住我的情况,将受到热烈欢迎。谢谢你

【问题讨论】:

在线性布局上设置背景。 当键盘出现时它会挤压背景视图!这是主要问题 【参考方案1】:

出于某种原因,上述方法都不适用于我,但这个方法有效。

getWindow().setBackgroundDrawableResource(R.mipmap.img_reg_bg);

把它放在oncreate方法中希望它会有所帮助。

【讨论】:

【参考方案2】:

如果我猜对了,您尝试修复您的修补程序以使其正常工作。如果我是对的,你应该回到从头开始,不用你的滚动视图来做。

如果您查看以下链接: http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

您会看到可以调整软键盘模式。 “adjustPan”应该可以解决你的问题。

“调整盘”

Activity 的主窗口没有调整大小来为软键盘腾出空间。相反,窗口的内容会自动平移,因此当前焦点永远不会被键盘遮挡,用户始终可以看到他们正在输入的内容。这通常不如调整大小可取,因为用户可能需要关闭软键盘才能到达窗口的模糊部分并与之交互。

【讨论】:

我真的很喜欢这个答案!它在某些情况下可能不合适,但在许多其他情况下是合适的。我不知道这存在。它会很有用:)【参考方案3】:

将一些图像添加到您的可绘制文件夹中,例如drawable-mdpidrawable-hdpi。 在你的LinearLayout "@+id/top_layout" 添加属性:

android:background="@drawable/someimage"

【讨论】:

我应该在哪里添加背景?我想我描述了当显示键盘时,父布局的任何背景图像都会挤压它! 您错过了结束 标记。这个背景是固定的,它是怎么被挤压的? 那只是一个错字! android:layout_height="wrap_content" 添加到您的ScrollView 并尝试使用LinearLayout 而不是FrameLayout 最后,尝试将此添加到清单文件中的&lt;activity&gt; 标签android:windowSoftInputMode="adjustPan|stateVisible"

以上是关于Android在滚动时修复了滚动视图中的背景图像的主要内容,如果未能解决你的问题,请参考以下文章

集合视图按钮背景图像在滚动时重复

修复了打印 CSS 中的背景

滚动条自动上下滚,如何解决?

android应用模仿android桌面效果,就是拖动页面时背景图片随之滚动,但是滚动的幅度比页面拖动的幅度小。

如何将Listview数据裁剪到android中的滚动位置?

Android - 从 mysql 数据库中查看更多旧数据(不是图像),当在列表视图中滚动底部时