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个方法中的代码注释
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。