webview获取网页标题

在上一篇博客里面已经实现了webview的网页加载进度条和自定义返回键,如今还有一个经常使用的功能就是H5那边的标题栏有多是须要咱们去写的,那么在展现的时候须要咱们去获取他们的标题而且展现。以前的一些布局在上一篇博客里面http://blog.csdn.net/wtwzd002/article/details/76359291
这里写的是修改的逻辑和布局。
一、webview所在activity的逻辑java

package com.xdf.education.bpmprojectcode.activity;

import android.app.Instrumentation;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.xdf.education.bpmprojectcode.R;


/** * Created by wds on 2017/7/17. */

public class WebView extends AppCompatActivity implements View.OnClickListener{

    private android.webkit.WebView webView=null;
    private ProgressBar pg;
    private TextView web_title=null;
    TextView web_return=null;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_topuptixan_web);


        String url = "https://www.baidu.com/";//测试访问百度首页

        webView = (android.webkit.WebView) this.findViewById(R.id.webView);
        pg=(ProgressBar) findViewById(R.id.progressBar);
        web_title=(TextView)findViewById(R.id.web_title);
        webView.getSettings().setJavaScriptEnabled(true);//支持JS
        web_return=(TextView)findViewById(R.id.web_return);
        webView.loadUrl(url);
        init();
        web_return.setOnClickListener(this);
    }


    private void init() {
        WebChromeClient wvcc = new WebChromeClient() {
            @Override
            public void onReceivedTitle(android.webkit.WebView view, String title) {
                web_title.setText("标题:" +title);
            }
            public void onProgressChanged(android.webkit.WebView view, int newProgress) {
                if(newProgress==100){
                    pg.setVisibility(View.GONE);//加载完网页进度条消失
                }
                else{
                    pg.setVisibility(View.VISIBLE);//开始加载网页时显示进度条
                    pg.setProgress(newProgress);//设置进度值
                }
            }

        };
        // 设置setWebChromeClient对象
        webView.setWebChromeClient(wvcc);

        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) {
                view.loadUrl(url);
                return true;
            }}
        );


    }


    //设置手机物理返回键动做(防止按返回键直接退出程序)
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO 自动生成的方法存根
        if(keyCode==KeyEvent.KEYCODE_BACK) {
            if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {//当webview不是处于第一页面时,返回上一个页面
                webView.goBack();
                return true;
            }


        }
        return super.onKeyDown(keyCode, event);
    }


    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.web_return:
                actionKey(KeyEvent.KEYCODE_BACK);
                break;
    }
    }
    //设置自定义返回键动做
    public void actionKey(final int keyCode) {
        new Thread () {
            public void run () {
                try {
                    Instrumentation inst=new Instrumentation();
                    inst.sendKeyDownUpSync(keyCode);
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
}

其中涉及标题内容的代码主要是onReceivedTitle()方法和设置setWebChromeClient对象webView.setWebChromeClient(wvcc);
下面是效果图
这里写图片描述
这里会涉及到一个问题,就是标题栏内容太长,我这里由于这个web_title_bar是一个相对布局,若是不设置TextView属性的话会出现一些问题,好比说下面这种状况
这里写图片描述
为了避免出现刚才的问题,可是又要title内容居中显示,所以个人web_title_bar布局中标题内容的TextView修改为了下面的样式android

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="55dp" android:background="@color/app" android:id="@+id/title_bar">

    <TextView  android:id="@+id/web_return" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:gravity="center" android:padding="10dp" android:text="返回" android:textColor="@color/white" android:textSize="@dimen/result_text" />
    <TextView  android:id="@+id/web_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_gravity="center" android:gravity="center" android:text="测试" android:maxEms="15" android:lines="1" android:ellipsize="end" android:textColor="@color/white" android:textSize="20sp" />
</RelativeLayout>

不知道你们对于我刚才碰见的问题有没有什么更好的方法解决,若是有的话请说明一下。web