首页 > 代码库 > webview的

webview的

============问题描述============


我给WEBVIEW加了等待的圆圈,怎么不起作用?

布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
	/>
	<ProgressBar android:id="@+id/progressBar"
	    style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:max="100" 
		android:progress="50" 
		android:secondaryProgress="70" 
        android:layout_gravity="center"
        android:visibility="gone"/>
</LinearLayout>


主程序代码:
package com.ruihuo.talk;

import com.ruihuo.talk.R;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.net.http.SslError;
import android.webkit.SslErrorHandler;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    private WebView webview;
    private ProgressBar myProgressBar;
	@SuppressLint("SetJavaScriptEnabled")
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow();
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main);
		myProgressBar = (ProgressBar)findViewById(R.id.progressBar);
		myProgressBar.setIndeterminate(false);
        webview=(WebView)findViewById(R.id.webview);
        webview.setWebViewClient(new WebViewClient() {

        	public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
        		//handler.cancel(); // Android默认的处理方式
        		handler.proceed();  // 接受所有网站的证书
        		//handleMessage(Message msg); // 进行其他处理
        		}
            public void onPageStarted(WebView webview, String url, Bitmap favicon) {
                super.onPageStarted(webview, url, favicon);
                myProgressBar.setVisibility(View.VISIBLE);
            }
            //加载完成时要做的工作
            public void onPageFinished(WebView webview, String url) {
            	super.onPageFinished(webview, url);
            	myProgressBar.setVisibility(View.GONE); 
            }
            // 加载错误时要做的工作

            public void onReceivedError(WebView webview, int errorCode,String description, String failingUrl) {
                Toast.makeText(MainActivity.this,
                                   errorCode+ "/" + description, Toast.LENGTH_LONG)
                                   .show();
            }

        });
        //去掉横向滚动条
        webview.setHorizontalScrollBarEnabled(false);
        //去掉垂直滚动条
        webview.setVerticalScrollBarEnabled(false);
        //去掉百边
        webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        //设置WebView属性,能够执行JavaScript脚本
        webview.getSettings().setJavaScriptEnabled(true);
        //加载URL内容
        webview.loadUrl("https://www.test.com/");
}
    //设置回退
    public boolean onKeyDown(int keyCode,KeyEvent event)
    {
            if((keyCode==KeyEvent.KEYCODE_BACK)&&webview.canGoBack())
            {
                    webview.goBack();
                    return true;
            }
            return super.onKeyDown(keyCode,event);
    }
    
    //web视图客户端
    public class MyWebViewClient extends WebViewClient
    {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {  
            view.loadUrl(url);  
            return true;  
        }
    }

}




希望达到的效果是,启动程序后,出现圆圈转动,等待页面加载好,圆圈就消失.目前程序可以运行,单是看不到圆圈.求解决

也就是 myProgressBar.setVisibility(View.VISIBLE);
没起作用.

============解决方案1============


布局文件中,将ProgressBar的android:visibility="gone"改为android:visibility="invisible"

============解决方案2============


 myProgressBar.setIndeterminate(false);这行代码做什么的?
mIndeterminate为true的情况,去setVisible()才能有动画。

============解决方案3============


把linearlayout改成relativelayout ,并设置progressbar Android:centerinparent="true" 

============解决方案4============


引用 6 楼 lionfresh 的回复:
Quote: 引用 3 楼 ruihuo 的回复:

Quote: 引用 1 楼 lionfresh 的回复:

布局文件中,将ProgressBar的android:visibility="gone"改为android:visibility="invisible"


改这个也无效.


引用 3 楼 ruihuo 的回复:
Quote: 引用 1 楼 lionfresh 的回复:

布局文件中,将ProgressBar的android:visibility="gone"改为android:visibility="invisible"


改这个也无效.


那我建议你使用ProgressDialog来实现,进度旋转,因为你现在用的方法已经很少用了。


难道你们没有发现是布局问题吗?

============解决方案5============




<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
    <ProgressBar android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:max="100" 
        android:progress="50" 
        android:secondaryProgress="70" 
        android:layout_centerInParent="true"
        android:visibility="visible"/>
</RelativeLayout >

webview的