Отключить нажатие / касание для некоторых элементов RecyclerView - PullRequest
0 голосов
/ 12 октября 2018

Есть ли способ предотвратить щелчок по определенному элементу представления переработчика?Уже пытались установить представление как не реагирующее на клики и не включенное в конструкторе держателя вида, но все же безуспешно.Когда я касаюсь редактируемого текста внутри макета этого элемента, он по-прежнему нажимается и открывает клавиатуру.

Заранее большое спасибо!

Редактировать: Это не та же проблема, что и представленнаяв указанной теме.Я не хочу отключать весь просмотр корзины.Просто отключите некоторые элементы из представления переработчика.Я уже попробовал решения, представленные в указанной теме, для конкретного представления элемента, и оно не сработало.

1 Ответ

0 голосов
/ 12 октября 2018

Вероятно, самый простой способ полностью заблокировать взаимодействие с чем-либо внутри одного элемента - это создать прозрачный вид на него, который перехватывает все сенсорные события.Вы могли бы сделать это, обернув существующий макет itemView в FrameLayout и добавив к нему еще одно представление:

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

    <!-- your itemView content here -->

    <View
        android:id="@+id/overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

Внутри onCreateViewHolder(), вы можете назначить прослушиватель щелчка без операциина оверлей:

@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View itemView = inflater.inflate(R.layout.itemview, parent, false);
    MyViewHolder holder = new MyViewHolder(itemView);

    holder.overlay.setOnClickListener(v -> {});

    return holder;
}

Теперь, когда вы хотите отключить щелчки, вы можете позвонить

holder.overlay.setVisibility(View.VISIBLE);

, а когда вы хотите отключить их, вы можете позвонить

holder.overlay.setVisibility(View.GONE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...