Android - 点击可点击的cardview中的小部件

时间:2015-04-07 08:06:16

标签: android android-cardview android-recyclerview android-switch

在战斗并最终实施之后:RecyclerView onClick我设法使卡片浏览可点击并且可以长按。这样做效果很好,或者说太好了,因为我也希望cardview中的某个小部件可以点击,所以当点击它时,cardview应该忽略点击,现在发生的是小部件和cardview,消耗单击。这是代码:

Recyclerview:

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:scrollbars="vertical"
        android:longClickable="true"
        android:hapticFeedbackEnabled="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</LinearLayout>

cardview:

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/cvWhitelist"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    card_view:cardCornerRadius="8dp"
    card_view:cardBackgroundColor="#99CC00"
    card_view:cardElevation="10dp" >

        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/sEnable"
            android:layout_alignParentEnd="true"
            android:layout_marginEnd="3dp"
            android:clickable="true"
            android:layout_above="@+id/tvHours" />


    </RelativeLayout>

</android.support.v7.widget.CardView>

Switch点击:

    holder.sEnable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
            ...do some stuff
        }
    });

Recyclerview点击/长按:

mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(Utils.context, mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {

    @Override
    public void onItemClick(View view, int position) {
         ..do some stuff
    }

    @Override
    public void onItemLongClick(View view, final int itemPosition) {
         ..do some stuff
    }
}));

我希望小部件是第一个被执行的,所以我将能够停止卡片视图点击进行处理,但相反的情况发生。我尝试捕获用户点击的小部件但我没有设法这样做,所有事件都被忽略了。请帮忙!

0 个答案:

没有答案
相关问题