0

我需要在加载 WebView 时显示 ProgressDialog,以便用户无法在后台看到页面加载。我只能让我的对话框显示为一个小框,我希望对话框填满操作栏下方的所有空间。

我怎样才能做到这一点?我已经使用了该方法progressDialog.setProgressStyle(),但没有任何运气。

如果还有其他更好的方法可以实现这一点,请告诉我。我的最终目标是让该应用程序的行为类似于 Facebook(原生)应用程序,在页面完成加载之前,“正在加载”指示器是可见的。

4

1 回答 1

0

我自己解决了这个问题。我使用了不同的方法来达到相同的效果。我不确定这是否是最佳实践,但我的 webview 布局现在看起来像这样:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!-- WebView progress -->

    <LinearLayout
        android:id="@+id/webProgress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:visibility="gone" >

        <ProgressBar
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp" />

        <TextView
            android:id="@+id/login_status_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:text="Loading"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:visibility="visible" />

</LinearLayout>

并显示和隐藏我使用的进度:

View webProgress = findViewById(R.id.webProgress);

...

public void showWVProgress() {
    webProgress.setVisibility(View.VISIBLE);
    isWVProgressShowing = true;     
}

public void hideWVProgress() {
    webProgress.setVisibility(View.GONE);
    isWVProgressShowing = false;
}
于 2013-01-08T16:12:50.120 回答