0

我有一个LinearLayout包含两个RelativeLayouts.

这是 XML 代码:

<LinearLayout
        android:id="@+id/SaleSwithcBarView_navigation_bar_LinrearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <RelativeLayout
            android:id="@+id/SaleSwithcBarView_users_created_bar_button_RelativeLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_centerInParent="true"
                android:paddingBottom="5dp"
                android:paddingTop="5dp"
                android:text="Large Text"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/SaleSwithcBarView_users_favorite_bar_button_RelativeLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_centerInParent="true"
                android:paddingBottom="5dp"
                android:paddingTop="5dp"
                android:text="Large Text"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </RelativeLayout>
    </LinearLayout>

现在我试图检测clickListner哪个视图(从这两个RelativeLayouts被点击),我试图这样做(java代码):

navigationBar.setOnClickListener(new OnClickListener() 
        {   
            @Override
            public void onClick(View navigationButton) 
            {
                Toast.makeText(context, "hope here: " + navigationButton.getId(), Toast.LENGTH_LONG).show();
                switch (navigationButton.getId()) 
                {
                    case USER_CREATED_BUTTON_ID:
                        Toast.makeText(context, "here", Toast.LENGTH_LONG).show();
                        switchTodDisplay(USER_CREATED_BUTTON_ID + BINDER_OFFSET);
                        break;

                    case USER_FAVORITE_BUTTON_ID:
                        Toast.makeText(context, "or here", Toast.LENGTH_LONG).show();
                        switchTodDisplay(USER_CREATED_BUTTON_ID + BINDER_OFFSET);
                        break;

                    default:
                        break;
                }
            }
        });

the navigationBaris the LinearLayoutand the USER_CREATED_BUTTON_ID(it is final int) 是左边的 idRelativeLayout并且USER_FAVORITE_BUTTON_ID是右边的 id RelativeLayout。我以编程方式分配了两个 id,如下所示:

userCreatedSalesBarButton.setId(USER_CREATED_BUTTON_ID);
userFavoriteSalesBarButton.setId(USER_FAVORITE_BUTTON_ID); 

那么我怎样才能检测到哪些LinearLayout子视图被点击了。我不想clickListeriner为每个RelativeLayout.

谢谢

4

1 回答 1

1

我不想为每个RelativeLayout 创建一个clickListeriner。

您可以使用单个OnClickListener实现,但您必须将 实际分配给OnClickListener您想要在单击时查找的小部件。

任何一个:

  • 将您现有的OnClickListener匿名内部类转换为常规内部类,然后创建该内部类的两个实例以用于每个“按钮”,或者

  • OnClickListener匿名内部类的实例存储在数据成员中,然后setOnclickListener()为每个“按钮”使用该数据成员

于 2013-07-18T22:51:26.623 回答