0

我有一个webViewwebView这个button。我在这样的情况下捕捉到一个触摸事件webviewwebView.setOnTouchListener(this);

@Override
    public boolean onTouch(View v, MotionEvent event) {
        if (ADS_VIDEO.contains(v.getId()) && v.getId() == R.id.webView
                && event.getAction() == MotionEvent.ACTION_DOWN) {
            intentVideo = new Intent(getBaseContext(),
                    AdVideoActivity.class);
            startActivity(intentVideo);
        }
        return false;
    }

我的按钮也有这个:

 button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
         webView.setVisibility(View.GONE);
         button.setVisibility(View.GONE);
        }
    });

我的问题是,当我单击 时buttonwebView会启动 的事件,而不是链接到按钮的事件。

更新 :

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="match_parent"
android:layout_height="match_parent"
android:padding="0dip"
android:id="@+id/relativeForWeb" >

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:contentDescription="@string/descr_image"
     />

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

<Button
    android:id="@+id/bt"
    android:layout_width="42dip"
    android:layout_height="42dip"
    android:text="x" 
    android:background = "@drawable/roundedbutton"/>


<WebView  
    android:id="@+id/webView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

/>

</RelativeLayout>
4

1 回答 1

1

因为 WebView 位于 layout.xml 中的 Button 之后,所以它位于其上方(RelativeLayout 根据它们在 layout.xml 中的顺序设置其视图的 z 顺序)。并且因为 webview 在按钮上方,所以它首先获取触摸事件并使用它。

只需将 webview 声明移到 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="match_parent"
android:layout_height="match_parent"
android:padding="0dip"
android:id="@+id/relativeForWeb" >

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:contentDescription="@string/descr_image"
     />

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

<WebView  
    android:id="@+id/webView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

/>

<Button
    android:id="@+id/bt"
    android:layout_width="42dip"
    android:layout_height="42dip"
    android:text="x" 
    android:background = "@drawable/roundedbutton"/>


</RelativeLayout>
于 2013-01-29T19:49:47.477 回答