Как заставить макет координатора применять поведение после функции прокрутки?Android

Форум для тех, кто программирует под Android
Anonymous
Как заставить макет координатора применять поведение после функции прокрутки?

Сообщение Anonymous »

Существует координаторLayout, который содержит AppBarLayout и NestedScrollView, который имеет TextView. TextView содержит текст Markdown. Я хочу прокрутить до привязки (#header). Приведенный ниже код работает должным образом, но после вызова NestedScrollView.scrollTo координаторLayout не вызывает скрытие AppBarLayout при прокрутке.
Что нужно сделать, чтобы координаторLayout получил событие прокрутки, инициируемое кодом? Я пробовал использовать SmoothScrollTo, ScrollBy, не работает. Когда пользователь прокручивает страницу вручную, AppBarLayout скрывается, как и ожидалось.
fun scrollToAnchor(view: View, anchor: String) {
val textView = view as TextView
textView.setTextIsSelectable(false)
val spanned = textView.text as Spanned
val spans = spanned.getSpans(0, spanned.length, AnchorSpan::class.java)
if (spans != null) {
for (span in spans) {
if (anchor == span.anchor) {
val start = spanned.getSpanStart(span)
val line = textView.layout.getLineForOffset(start)
val top = textView.layout.getLineTop(line)

val scrollToFunc = (view.parent as? NestedScrollView)?.let { it::scrollTo } ?: view::scrollTo
scrollToFunc.invoke(0, top)
break
}
}
}
textView.setTextIsSelectable(true)
}



















Подробнее здесь: https://stackoverflow.com/questions/790 ... o-function

Вернуться в «Android»