ClickListener представления ItemTouchHelper

Недавно я обнаружил ItemTouchHelper (точнее, функцию салфетки), и я использую в проекте, который я работаю.

Я создал FrameLayout с 2 контейнерами: один для передней и другой для задней. Задний контейнер имеет TextView с (в коде) имеет clickListener,

Это FrameLayout:

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

<RelativeLayout
    android:id="@+id/background_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/work_order_deleted_item_background_color">
    <TextView
        android:id="@+id/delete_wo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:text="@string/action_delete"
        android:textColor="@android:color/white"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"/>
</RelativeLayout>
<RelativeLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:visibility="invisible"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">
    ...
</RelativeLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/font_grey_secondary"/>
</FrameLayout>

ViewHolder:

class CustomViewHolder extends RecyclerView.ViewHolder {
    protected RelativeLayout container;
    protected RelativeLayout backgroundContainer;
    protected TextView deleteLabel;

    public CustomViewHolder(View view) {
        super(view);
        this.container = view.findViewById(R.id.container);
        this.backgroundContainer = view.findViewById(R.id.background_container);
        this.deleteLabel = backgroundContainer.findViewById(R.id.delete_wo);
    }
}

И это когда я вызываю внутри onBindViewHolder:

holder.deleteLabel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            presenter.checkDeletion();
        }
    });

ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        }

        @Override
        public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder){
            final View container = ((WorkOrderAdapter.CustomViewHolder)viewHolder).container;
            getDefaultUIUtil().clearView(container);
        }

        @Override
        public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
            final View container = ((WorkOrderAdapter.CustomViewHolder) viewHolder).container;
            getDefaultUIUtil().onDraw(c, recyclerView, container, dX, dY, actionState, isCurrentlyActive);
        }

        @Override
        public void onChildDrawOver(Canvas c, RecyclerView recyclerView,
                                    RecyclerView.ViewHolder viewHolder, float dX, float dY,
                                    int actionState, boolean isCurrentlyActive) {
            final View container = ((WorkOrderAdapter.CustomViewHolder) viewHolder).container;
            getDefaultUIUtil().onDrawOver(c, recyclerView, container, dX, dY,
                    actionState, isCurrentlyActive);
        }
    };
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemTouchHelperCallback);
    itemTouchHelper.attachToRecyclerView(recyclerviewWorkOrder);

Вид переднего плана при пролистывании, даже если я скрываю вид переднего плана, слушатель фона не может работать. Только если я отчаянно нажму на него, в какой-то момент сработает.

Есть ли конфликт с раскладками z position?

0 ответов

Другие вопросы по тегам