我有一个简单的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,但这没有用。
答案 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;
}
}
如果您不创建此开关,则与该侦听器关联的所有视图都将对该单击作出反应。