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个方法中的代码注释
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。