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

时间:2011-03-16 19:10:13

标签: android webview

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

谢谢!

2 个答案:

答案 0 :(得分:0)

为你的webview设置一个onTouchListener,它检查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()从任何东西变为零,它就会向你发送一个调用。

答案 1 :(得分:0)

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

mWebView是网络视图(..)且url_bar是您想要的顶部视图时。

修改
阅读更多here并注意接受答案中的评论。