如何在加载时正确显示Progressview的Webview

时间:2014-03-04 15:01:30

标签: android android-layout webview

我不想表明我的webview正在以某种方式加载。使用Progressbar似乎是一个很好的解决方案,但我不确定如何正确地执行此操作。 通过Progressbar我的意思是在Android中旋转的东西。

这就是我现在所知道的以及我所尝试的内容: 我知道您在WebViewClient中定义的onPageStarted(...)和onPageFinished(...)回调,然后根据对这些方法的调用隐藏或显示Progressbar。但是这种方法在webview中的HTML页面中产生了许多问题。例如,当我隐藏Progressbar时,HTML元素会调整大小,而不是在短时间内恢复原始大小。这看起来很丑陋,我不知道为什么会这样。我尝试将我的进度条和webview放在框架和相对布局中(为了让进度加快)并且使用这两个我得到了上述问题。 HTML页面加载是Javascript很重,因为它上面有http://cubiq.org/iscroll-4库,但我怀疑这是库的问题,因为在手机上的浏览器应用程序中打开时,同一页面加载没有奇怪的行为。

我的主要问题是我不知道如何定义包含Progressbar和webview的布局,并避免奇怪的放大/缩小跳转。这就是为什么我要问如何在webview上正确显示进度条。

编辑: 这是我尝试过的布局之一:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<ProgressBar
    android:id="@+id/progressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" />

</FrameLayout>

它与相对布局或多或少相似,但我在ProgressBar的两个轴上使用centerInPerent = true

2 个答案:

答案 0 :(得分:1)

有一种有效的方式来显示活动的进展。如果您使用的是ActionBar,那么 您可以设置INDETERMINATE进度条(旋转进度条)或水平进度条(如Chrome浏览器等网络浏览器)。为此,您必须将窗口特征设置为适当的值,如:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

OR

requestWindowFeature(Window.FEATURE_PROGRESS);

要设置进度值,请执行以下操作:

setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);

每当您想要更改进度值时,请致电setProgress(int)

您可以使用

控制进度条的可见性
setProgressBarIndeterminateVisibility(true); //sets it to visible

setProgressBarIndeterminateVisibility(false); //hides the progressbar

答案 1 :(得分:0)

FrameLayout旨在阻挡屏幕上的某个区域以显示单个项目。通常,FrameLayout应该用于保存单个子视图。

我会使用RelativeLayout:

<?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">

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<ProgressBar
    android:id="@+id/progressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:centerInParent="true" />

</RelativeLayout>

这应该有用......