0

ビューのどの部分がクリックされたかという情報を取得するのに問題があります。次のように定義された子行アイテムがあります。

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/row_height"
        android:background="@color/app_white" >


        <CheckBox
            android:id="@+id/checkbox"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="@dimen/row_margin"
            android:button="@drawable/checkbox_states"
            android:focusable="false" />
    </RelativeLayout>

    <View
        android:id="@+id/view"
        android:layout_width="fill_parent"
        android:layout_height="10dp"
        android:background="@android:color/transparent"
        android:focusable="false"  />   

</LinearLayout>

アクティビティでは、onChildClickを定義する必要があります

public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
            int childPosition, long id) {
Log.e(LOGTAG, "onChildClick: v.getTag: " + v.getTag() + " groupPos: " + groupPosition
                + " childPosition: " + childPosition + " rowId: " + id);

        if (v instanceof LinearLayout) {
            View view = ((LinearLayout) v).getChildAt(1);
            if (view != null) {
                if (view.getTag() != null) {
                    Log.e(LOGTAG, "onChildClick: view.isSelected: "+view.isSelected());
                    Log.e(LOGTAG, "onChildClick: view.isPressed: "+view.isPressed());
                    Log.e(LOGTAG, "onChildClick: view.getTag: " + view.getTag());
                    return true;
                }
            }
        }

ご覧のとおり、ビューは常にLinearLayoutです。ビューまたはRelativeLayoutがクリックされた場合、どうすれば情報を取得できますか?

4

1 に答える 1

0

onChildClick() は、クリックされた子行全体を常に返します。RelativeLayout がクリックされたかどうかを知りたい場合は、そのレイアウトに onCLickListener を追加する必要があります。

于 2012-05-23T19:49:44.597 に答える