在点击视图时传递给兄弟姐妹的事件

时间:2014-12-11 09:01:20

标签: android

我有一个简单的LinearLayout(horizontal),其中包含3 TextView个。这些TextView的背景设置为drawable,它有两个状态state_pressed和默认值。我只是在state_pressed上将每个TextView的背景更改为红色 但是当我单击一个TextView时,会调用其单击侦听器,但所有3个的背景都会变为红色。这是在Android 2.x上发生的,并且在Android 4.0 +上正常运行。

<LinearLayout
        android:id="@+id/back"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:paddingLeft="@dimen/swipe_list_leftoffest"
        android:descendantFocusability="blocksDescendants"
        android:background="@color/list_swipe_back"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:weightSum="3"
        android:tag="back">


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="14sp"
                    android:clickable="true"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:id="@+id/amenities_view"
                    android:padding="@dimen/padding_large"
                    android:background="@drawable/swipe_view_background"
                    android:drawablePadding="@dimen/padding_large"
                    android:textColor="@color/white"
                    android:text="@string/amenities_text"
                    android:drawableTop="@drawable/ic_amenities"
                    />


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:layout_weight="1"
                android:clickable="true"
                android:gravity="center"
                android:ellipsize="end"
                android:singleLine="true"
                android:id="@+id/cancpolicy_view"
                android:padding="@dimen/padding_large"
                android:background="@drawable/swipe_view_background"
                android:drawablePadding="@dimen/padding_large"
                android:textColor="@color/white"
                android:text="@string/canc_policy_text"
                android:drawableTop="@drawable/ic_cancellation_policy"

                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="14sp"
                android:layout_weight="1"
                android:gravity="center"
                android:clickable="true"
                android:padding="@dimen/padding_large"
                android:id="@+id/reviews_view"
                android:background="@drawable/swipe_view_background"
                android:drawablePadding="@dimen/padding_large"
                android:textColor="@color/white"
                android:text="@string/reviews_text"
                android:drawableTop="@drawable/ic_reviews"
                />


    </LinearLayout>

尝试将每个TextView的focusable和focusableInTouchMode设为false,但这没有用。

1 个答案:

答案 0 :(得分:0)

TextViews有3个单独的onClickListener吗?如果你只有一个,这可能是问题,你可以通过在监听器中做这样的事情来解决它:

public void onClick(View v){
   switch(v.getId()){
      case R.id.amenities_view:
          //Click first
          break;
      case R.id.cancpolicy_view:
          //Click second
          break;
      case R.id.reviews_view:
          //Click third
          break;
   }
}

如果您不创建此开关,则与该侦听器关联的所有视图都将对该单击作出反应。