webview中都会需要做个header头,上面有个返回按钮和当前页面的标题
首选处理获取标题功能 webview 封装好了一个函数,直接调用就可以
TextView webview_title = (TextView) findViewById(R.id.webview_title); WebView webView = (WebView) findViewById(R.id.web_view); Button back_button = (Button) findViewById(R.id.back_button); //...加载代码以及其余代码省略 //获取当前html的title 并赋值给webview_title webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { // TODO Auto-generated method stub super.onReceivedTitle(view, title); webview_title.setText(title); //titles.add(title); } });
webview返回按钮 以及手机返回键的返回功能
//手机返回键 返回功能 webView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) { webView.goBack(); //titles.remove(titles.size() - 1); //webview_title.setText(titles.get(titles.size() - 1)); return true; } } return false; } }); //webview的header的返回按钮的返回功能 back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub webView.goBack(); /*if (titles.size() > 1) { titles.remove(titles.size() - 1); webview_title.setText(titles.get(titles.size() - 1)); } else { WebViewActivity.this.finish(); }*/ } });
基本的功能都实现了,运行后尝试下,会发现一个问题,在webview中,点进去可以,webview头上的title显示正常,返回时webview的title不会改变,也就是
public void onReceivedTitle();
这个方法返回时不会执行,
解决方法:自己写个List集合
List<String> titles = new ArrayList<String>();
获取html的title时候顺便将该title添加进titles
返回时remove掉最后一个,在从titles中取最后一个赋给webview的title
具体逻辑,取消上面3个方法中的代码注释
本文出自 “IT家园” 博客,请务必保留此出处http://zhaodan.blog.51cto.com/7568578/1676742
webview 获取当前html的title以及返回时title的变化处理
原文地址:http://zhaodan.blog.51cto.com/7568578/1676742