我的android webView应用程序运行良好。它还会在加载url时显示ProgressBar,并在完成加载时隐藏它并具有漂亮的效果,因为我在ProgressBar布局中放置了一些alpha以在后台查看webView。我跟着this example.。
我的问题是:webView仍然可以点击。
MyManifest.xml
:我认为我需要所有权限......
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21" />
main_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainLayout"
tools:context="com.siconet.axa.MainActivity" >
<RelativeLayout
android:id="@+id/loadingPanel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" >
<ProgressBar
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:indeterminate="true" />
</RelativeLayout>
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
然后我在客户端显示/隐藏进度条,我需要避免单击webView:
webViewClient.java
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
loadingFinished = false;
// this works like charm
activity.findViewById(R.id.loadingPanel).setVisibility(View.VISIBLE);
activity.findViewById(R.id.webView).setAlpha(0.3f);
// this is not working :(
activity.findViewById(R.id.loadingPanel).setClickable(true);
activity.findViewById(R.id.webView).setClickable(false);
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url)
{
// control of the loading options....
if (loadingFinished && !redirect) {
activity.findViewById(R.id.loadingPanel).setVisibility(View.GONE);
activity.findViewById(R.id.webView).setAlpha(1f);
// not working again :(
activity.findViewById(R.id.loadingPanel).setClickable(false);
activity.findViewById(R.id.webView).setClickable(true);
}
}
我也尝试过requestFocus():
activity.findViewById(R.id.loadingPanel).requestFocus();
在视图中添加侦听器:
mWebView.setOnTouchListener(new OnTouchListener() { // declare listener...
知道为什么会发生这种情况???
答案 0 :(得分:0)
将此属性添加到XML中的ProgressBar
元素:
android:clickable="true"
答案 1 :(得分:0)
将您的RelativeLayout
(ProgressBar
View
父级)属性更改为:
<RelativeLayout
android:id="@+id/loadingPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:layout_centerInParent="true" >
这将使您的RelativeLayout
覆盖整个布局(不仅仅是100dpx100dp)并在可见时接收点击次数。