【问题标题】:Android ScrollView containing LinearLayout with WebView scroll behaviorAndroid ScrollView 包含具有 WebView 滚动行为的 LinearLayout
【发布时间】:2011-06-09 11:48:57
【问题描述】:

我有一个这样的视图层次结构,一个垂直的 ScrollView 和一个包含两个孩子的垂直 LinearLayout:

ScrollView ->orientation:vertical, width:fill_parent, height: fill_parent
   LinearLayout -> orientation:vertical, width:fill_parent, height: fill_parent  
      WebView -> width:fill_parent, height: fill_parent
      GoogleAdView -> width:wrap_content, height:wrap_content

当滚动到 webview 的底部并单击那里的任何链接时,尽管页面加载,滚动条仍停留在底部而不是移动到顶部。我可以使用scroll.fullScroll(ScrollView.FOCUS_UP) 以编程方式设置滚动条,但这会导致滚动条明显向上跳跃。我曾尝试在使用scrollView.setVerticalScrollBarEnabled(false) 加载页面之前隐藏滚动条,然后在调用scroll.fullScroll(ScrollView.FOCUS_UP) 之前在页面加载后重新启用它,但这仍然会导致滚动条“跳跃”。

WebView 本身可以更好地处理页面更改时的滚动,看起来它隐藏了滚动条,然后在加载后使其显示在页面顶部。有没有办法使用 ScrollView 来维护它?

【问题讨论】:

    标签: android android-webview android-scrollview


    【解决方案1】:

    您不能可靠地将WebView 放入ScrollView

    将您的广告嵌入到您的 Web 内容中,将横幅固定在屏幕上,或者设计一些其他触发器来动画隐藏广告(例如,在 5 秒后消失)。

    【讨论】:

      【解决方案2】:

      我通过在 webview 中添加 AD 解决了这个问题。很遗憾,您将无法使用任何广告网络 SDK,但它的用户体验要好得多。

      在 webview 加载后使用 javascript 注入插入您的广告。

      【讨论】:

        【解决方案3】:

        诀窍是在将内容加载到 WebView 时使用loadDataWithBaseURL。简单地执行loadData 不会导致滚动偏移重置。

        【讨论】:

          猜你喜欢
          • 2013-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-20
          • 1970-01-01
          • 2012-10-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多