如何在WebView上实现滚动 - 隐藏地址栏?

问题描述:

我想实现一个地址栏,如默认的浏览器应用程序,如果用户向下滚动网页并且当用户将网页滚动到顶部然后向上滚动时再次显示,可以隐藏。如何在WebView上实现滚动 - 隐藏地址栏?

谢谢!

+0

您可以随时阅读[浏览器源代码](http://android.git.kernel.org/?p=platform/packages/apps/Browser.git;a=summary)。 – 2011-03-16 19:43:29

设置onTouchListener你的WebView,检查wv.getScrollY(),看它是否为0。像这样:

mWebView.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent me){ 
      if(me.getAction() == MotionEvent.ACTION_UP){ //You might try with MotionEvent.ACTION_MOVE also, but you'll get way more calls. 
       if(mWebView.getScrollY() == 0){ 
        //You are at the top, do what you need to do in order to show your address bar. 
       } 
      } 

      return false; 
     } 
    }); 

,如果用他们的手指在用户滚动并释放他们的手指都该示例将工作在顶部的方式。这不会处理用户滚动到顶部的所有可能方式。我认为要处理它们,所有理想的解决方案都是覆盖WebView并向其添加一个监听器,只要getScrollY()从任何东西改变为零,就会向您发送一个调用。

+0

我想要Android内置浏览器的相同滚动行为,而不仅仅是检查WebView的滚动位于顶部。 – basicsharp 2011-03-19 08:56:36

try { 
     Method m = WebView.class.getMethod("setEmbeddedTitleBar", new Class[] { View.class }); 
     m.invoke(mWebView, url_bar); 
    } 
    catch(Exception e) { 
    } 

mWebView是Web视图(..)和url_bar在顶部所需的视图。

编辑
更多here,注意在接受答案的评论。