0

私はこれに と を持っていwebViewます。次のようなタッチイベントをキャッチします: .webViewbuttonwebviewwebView.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 はボタンの上にあるため、最初にタッチ イベントを取得して消費します。

layout.xml のボタン宣言の前に webview 宣言を移動するだけで問題ありません。

そのようです:

<?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 に答える