关于WebView顶部的滚动条简单但记录下供以后使用

本文介绍了如何在Android的WebView中添加顶部滚动条,通过在WebView上方添加一个ProgressBar并设置样式,实现了页面加载时的滚动效果。在Android 4.3.3和5.0系统上,WebView的处理方式有所不同。代码示例展示了启用JavaScript的重要性,并提醒在AndroidManifest.xml中添加必要权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近碰到了WebView的使用。 经过自己查看api。写了一下WebView.加上顶部的页面加载时的滚动效果。


要在WebView的上方加一个滚动条。其实就是加一个ProgressBar 设置样式即可。



附上 activity_main.xml
<?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="match_parent">


    <EditText
        android:id="@+id/editText_http"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入http"/>

    <Button
        android:layout_below="@+id/editText_http"
        android:id="@+id/mian_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="Onclick"
        android:text="确定"/>

    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:id="@+id/baifenbi"
        android:layout_width="match_parent"
        android:layout_height="5dp"
        android:layout_below="@+id/mian_button" />


    <WebView
        android:layout_below="@+id/baifenbi"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView"/>
</RelativeLayout>

android真机测试的系统为Android4.3.3 不设置属性自动调用系统浏览器或者第三方浏览器。然而Android5.0系统不设置WebView属性则不调用第三方。其余为测试。

附上 MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity {
    private WebView mWebView;
    private EditText mEditText;
    private String http = "http://";
    private ProgressBar mProgressBar;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }



    private void initView() {
        mEditText = (EditText) findViewById(R.id.editText_http);
        mProgressBar = (ProgressBar) findViewById(R.id.baifenbi);
        mWebView = (WebView) findViewById(R.id.webView);
        //设置webView打开网页而不是系统浏览器或者第三方浏览器
        mWebView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
                view.loadUrl(url);
                return true;
            }
        });
        //如果网页中有js则标记为webView支持js
        mWebView.getSettings().setJavaScriptEnabled(true);
        //优先使用缓存
        //mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        //不有限使用缓存
        //mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);



    }

    public void Onclick(View view) {
        switch (view.getId()) {
            case R.id.mian_button:
                String URl = mEditText.getText().toString();
                mWebView.loadUrl(http + URl);
                //加载本地资源
                //mWebView.loadUrl("file:///android_asset/example.html");
                //判断页面加载过程 既滚动条
                mWebView.setWebChromeClient(new WebChromeClient() {
                    @Override
                    public void onProgressChanged(WebView view, int newProgress) {
                        if (newProgress == 100) {
                            mProgressBar.setVisibility(View.INVISIBLE);
                        } else {
                            if (View.INVISIBLE == mProgressBar.getVisibility()) {
                                mProgressBar.setVisibility(View.VISIBLE);
                            }
                            mProgressBar.setProgress(newProgress);
                        }
                        super.onProgressChanged(view, newProgress);
                    }
                });
                break;
        }
    }
}

webView设置支持js和不支持js的效果完全不同

mWebView.getSettings().setJavaScriptEnabled(true);

最后不要忘记在AndroidManifest.xml加入权限

<uses-permission android:name="android.permission.INTERNET"/>

其实这点东西挺简单啦。代码就能看明白。就写这么多了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值