0

そのため、Android アプリの開発中に少し変わった動作に出くわしました。なぜそれが起こるのか興味がありました。次の操作を行うと、タッチ イベントは登録されません。

mInflatedLayout = getLayoutInflater().inflate(R.layout.my_layout, null, false);
mInflatedLayout.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Log.e(TAG, "Hello world");
        return false;
    }
});

ただし、次の操作を行うと、タッチ イベントが登録されます。

mInflatedLayout = getLayoutInflater().inflate(R.layout.my_layout, null, false);
mInflatedLayout.findViewById(R.id.child_view)
    .setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            Log.e(TAG, "Hello world");
            return false;
        }
});

:上記のコードは、簡単にするために実際のアプリを疑似コード風に書き直したものです。コンパイル時エラーの原因となるものは無視してかまいません。

私の質問は、なぜこれが起こるのですか?私が見逃している本当に単純なことがここで起こっていると推測しても構わないと思っていますが、それが何であるかについては少し困惑しています.

編集:これは私が使用しているレイアウトファイルです。価値があるのは、ビュー自体が ListView の空のビューとして表示されていることです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

<include
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    layout="@layout/header_view" />

<LinearLayout
    android:id="@+id/child_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:paddingRight="?baseGapSize"
    android:paddingLeft="?baseGapSize"
    android:orientation="vertical" >


    <CustomFrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/selector_white_rounded_rect_inactive"
        android:paddingBottom="?baseGapSize"
        android:paddingTop="?baseGapSize" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textAppearance="@style/StandardLightText" />
    </CustomFrameLayout>

    <CustomRelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/selector_white_rounded_rect_inactive" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:contentDescription="@string/take_a_photo"
            android:paddingBottom="?baseGapSize"
            android:paddingTop="?baseGapSize"
            android:src="@drawable/camera_with_plus" />
    </CustomRelativeLayout>
</LinearLayout>

4

1 に答える 1