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 >

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。