У меня есть view
, и я хочу показать его, когда я нажимаю кнопку/макет и спрячу его, когда я касаюсь где-то еще. Как мне это сделать? Я написал код в dispatchTouchEvent(Motion Event)
, и он работает. Но, я думаю, должен быть другой способ сделать это.Как скрыть recyclerview на внешнем событии касания?
ответ
Вы можете заполнить внешнюю часть вашего RecyclerView с помощью другого интерактивного представления и реализовать метод setOnTouchListener для этого представления. Вот пример:
Допустим, мы получили RecyclerView в верхней части нашего RelativeLayout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="300dp"
android:scrollbars="vertical" />
<!--View below is just to fill the remaining space. We will use this view to catch outside touch-->
<View
android:id="@+id/outside_detector"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/recyclerView"
android:clickable="true"
android:focusable="true"/>
</RelativeLayout>
И мы хотим, чтобы скрыть и показать нашу recyclerview, когда мы щелкаем за пределами RecyclerView:
((View) findViewById(R.id.outside_detector)).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg1.getAction() == MotionEvent.ACTION_DOWN){
if(recyclerView.getVisibility() == View.VISIBLE){
recyclerView.setVisibility(View.INVISIBLE);
}else{
recyclerView.setVisibility(View.VISIBLE);
}
}
return true;
}
});
Если вы хотите показать recyclerview при нажатии кнопки, просто напишите recyclerView.setVisibility(View.VISIBLE)
метод внутри кнопки ClickListener!
Надеюсь, это поможет!
thaks, но если у меня будет много просмотров в этом 'RelativeLayout', создайте еще один' view' для более удобного перехвата событий, правильно ли это? –
Извините, я не понял. Не могли бы вы пояснить, что вы сказали? – Umarov
Я думал, что создание 'view' может иметь некоторые побочные эффекты –
- 1. Рисунок на событии касания
- 2. Triggering Promise.fulfill на внешнем событии
- 3. Как рисовать линию на событии касания?
- 4. Предотвращение повторного использования при остановке прокрутки на событии касания
- 5. Вращение спрайта в событии касания
- 6. Задержка в событии касания ViewPager
- 7. Как скрыть весь RecyclerView?
- 8. Получение пользовательского SuperView в событии касания?
- 9. RecyclerView нет касания обратной связи
- 10. Скрыть контекстное меню на внешнем клике
- 11. расскажите о событии чистого касания и событии чистого жестов?
- 12. Можно ли скрыть файл на внешнем хранилище?
- 13. Как скрыть представление в RecyclerView
- 14. Вращение объекта при событии касания в киви
- 15. Выпадающее меню, исчезающее при событии касания
- 16. Скрыть панель прокрутки RecyclerView
- 17. Полностью повторяющееся движение мыши в событии касания
- 18. отключить события касания RecyclerView (чтобы предотвратить пользовательские касания)?
- 19. Скрыть угловую подсказку на пользовательском событии
- 20. метки доступа, созданные при нажатии кнопки на внешнем событии
- 21. Скрыть виды от RecyclerView
- 22. Ошибка EXC BAD ACCESS при событии касания
- 23. Как сделать условный перехват касания?
- 24. Необходимо изменить значение Lable внутри ячейки на событии касания кнопки
- 25. Android - рисование растрового изображения на экране при событии касания
- 26. Как обнаружить задержку в событии касания? - ANDROID - Eclipse
- 27. Как я могу сообщить Галерее о событии касания в ScrollView?
- 28. Скрыть представление в элементе recyclerview
- 29. RecyclerView выбранный элемент и как отключить события касания
- 30. скрыть панель при прокрутке recyclerview
Что вы имеете в виду под «View with RecyclerView»? Вы имеете в виду элемент recyclerView? – Umarov
Это означает, что во внутреннем представлении RecyclerView я думаю, что это неважно –