В основном, CollapsingToolbarLayout
не является View
, но ViewGroup
. Он наследует от FrameLayout
и выступает в качестве контейнера для AppBarLayout
, когда некоторые из представлений необходимо было свернуть / развернуть на основе поведения прокрутки панели приложения .
Итак, это оболочка для Toolbar
, которая реализует сворачивающуюся панель приложения. Он предназначен для использования в качестве прямого потомка AppBarLayout
.
Теперь к вашему вопросу:
" Так как CollapsingToolbarLayout
можно свернуть / развернуть с помощью нашего пальца, но нет метода onTouch
переопределить? "
Ответ прост, это не так. Это сам AppBarLayout
, который перехватывает событие касания на основе слушателя OffsetChange и передает обратные вызовы его потомкам. У CollapsingToolbarLayout
есть возможность анимировать заголовок панели инструментов (свернуть / развернуть) и некоторые другие вещи, такие как фоновое изображение, закрепление заголовка и т. Д., Поэтому, в основном, он реагирует на прослушиватель OffsetChange [1123] при получении обратных вызовов. 1117]
Проверьте официальную ссылку для более подробной информации.
Необходимо добавить уровень абстракции так, чтобы __LINE__
будет расширен:
#define _CONCAT_(x,y) x ## y
#define CONCAT(x,y) _CONCAT_(x,y)
#define VAR_LINE(x) int CONCAT(_anonymous, __LINE__) = x