我不想表明我的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
答案 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>
这应该有用......