android – 如何阻止ScrollView滚动到WebView中当前加载页面的底部

android – 如何阻止ScrollView滚动到WebView中当前加载页面的底部,第1张

概述我知道有类似的问题,我已经尝试并实施了所有这些解决方案的建议.然而,他们都没有与我合作.即使WebView完成加载数据,ScrollView永远不会停止滚动底部.我想使用pull来刷新并使用onScrollListener隐藏 *** 作栏.一切都很好,但我不能阻止scrollView从不间断滚动到底部. 我读到这个:How to prevent a scrollview from scrolling 我知道有类似的问题,我已经尝试并实施了所有这些解决方案的建议.然而,他们都没有与我合作.即使WebVIEw完成加载数据,ScrollVIEw永远不会停止滚动到底部.我想使用pull来刷新并使用onScrollListener隐藏 *** 作栏.一切都很好,但我不能阻止scrollVIEw从不间断滚动到底部.

我读到这个:How to prevent a scrollview from scrolling to a webview after data is loaded?

我也读过这篇文章:webview is forcing my scrollview to the bottom

我试图实现一个自定义的scrollvIEw,它覆盖了requestChildFocus方法.

我在我的xml文件中添加了androID:descendantFocusability =“blocksDescendants”.

我添加了androID:focusableIntouchMode =“true”,但仍然没有好处,没有变化.它仍然迫使永远滚动.

这是我的自定义滚动视图:

package com.example.john.cosmicbrowser;import androID.content.Context;import androID.util.AttributeSet;import androID.vIEw.VIEw;import androID.webkit.WebVIEw;import androID.Widget.ScrollVIEw;public class MyScrollVIEw extends ScrollVIEw{    public MyScrollVIEw(Context context)    {        super(context);    }    public MyScrollVIEw(Context context,AttributeSet attributeSet)    {        super(context,attributeSet);    }    public MyScrollVIEw(Context context,AttributeSet attributeSet,int defStyle)    {        super(context,attributeSet,defStyle);    }    @OverrIDe    public voID requestChildFocus(VIEw child,VIEw focused)    {        if (focused instanceof WebVIEw)            return;        super.requestChildFocus(child,focused);    }}

这是我的xml文件:

<?xml version="1.0" enCoding="utf-8"?><androID.support.v4.Widget.SwipeRefreshLayout    androID:ID="@+ID/swipe"    xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:descendantFocusability="blocksDescendants"    app:layout_behavior="@string/appbar_scrolling_vIEw_behavior"    tools:context=".WebActivity"    tools:showIn="@layout/activity_webvIEw"    >    <com.example.john.cosmicbrowser.MyScrollVIEw        xmlns:androID="http://schemas.androID.com/apk/res/androID"        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:focusableIntouchMode="true"        androID:descendantFocusability="blocksDescendants"        >        <relativeLayout            androID:layout_wIDth="match_parent"            androID:layout_height="match_parent"            androID:descendantFocusability="blocksDescendants"            >            <WebVIEw                androID:ID="@+ID/webVIEw"                androID:layout_wIDth="match_parent"                androID:layout_height="match_parent"                androID:layout_alignParentleft="true"                androID:layout_alignParentStart="true"                androID:layout_centerVertical="true"                androID:padding="0dp"/>            <Progressbar                androID:ID="@+ID/cosmicProgressbar"                                androID:layout_wIDth="match_parent"                androID:layout_height="4dp"                androID:layout_alignParentleft="true"                androID:layout_alignParentStart="true"                androID:layout_alignParenttop="true"                androID:indeterminate="false"/>        </relativeLayout>    </com.example.john.cosmicbrowser.MyScrollVIEw></androID.support.v4.Widget.SwipeRefreshLayout>

例如,假设您在此WebvIEw上打开了Google.com.页面加载后,令人难以置信的向下滚动到底部,你甚至看不到页面底部的任何信息.我该如何解决这个问题?任何帮助将非常感谢!提前致谢!

顺便说一句,添加androID:descendantFocusability =“blocksDescendants”会导致Google.com打开后无法搜索的问题,您无法在Google的搜索栏中输入任何输入!

解决方法 我遇到了同样的问题.我的解决方案是在加载URL后立即将webvIEw的高度设置为等于其内容:

mWebVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt(){                @OverrIDe                public voID onPageFinished(WebVIEw vIEw,String url) {                    super.onPageFinished(vIEw,url);                    relativeLayout.LayoutParams params = new relativeLayout.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT,mWebVIEw.getMeasuredHeight());                    params.addRule(relativeLayout.AliGN_PARENT_top,relativeLayout.TRUE);                    mWebVIEw.setLayoutParams(params);                }            });

请注意,在我的情况下,relativeLayout是WebVIEw的父级,您应该更改为相应的.

@H_404_49@ 总结

以上是内存溢出为你收集整理的android – 如何阻止ScrollView滚动到WebView中当前加载页面的底部全部内容,希望文章能够帮你解决android – 如何阻止ScrollView滚动到WebView中当前加载页面的底部所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1123682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存