首页 > 代码库 > 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的