Метод stickyHeader
Метод stickyHeader приёмника
LazyListScope
добавляет пункт-заголовок, который прилипает
к краю списка, пока под ним идут пункты той же секции.
Работает в
LazyColumn
и
LazyRow.
Содержимое задают в лямбде content.
Синтаксис
stickyHeader {
Text("abcde")
}
Параметры
| Параметр | Описание |
|---|---|
content |
Лямбда с composable заголовка секции. |
key |
Ключ заголовка для стабильной идентификации. |
contentType |
Тип содержимого для переиспользования ячеек. |
Пример
Давайте закрепим заголовок над длинным списком:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
import androidx.compose.foundation.background
import androidx.compose.ui.graphics.Color
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val lines = List(20) { "12345" }
LazyColumn {
stickyHeader {
Text(
text = "abcde",
modifier = Modifier.background(Color.LightGray),
)
}
items(lines) { line ->
Text(text = line)
}
}
}
}
}
На экране при прокрутке строка "abcde"
останется сверху, пока видны пункты секции под ней.
Пример
Давайте сделаем две секции с разными заголовками:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
LazyColumn {
stickyHeader(key = "a") {
Text(text = "abcde")
}
item { Text(text = "12345") }
stickyHeader(key = "b") {
Text(text = "abcde")
}
item { Text(text = "12345") }
}
}
}
}
На экране при прокрутке активный заголовок секции будет сменять друг друга у верхнего края списка.
Смотрите также
-
метод
item,
который добавляет обычный пункт без закрепления -
функция
LazyColumn,
где stickyHeader работает по вертикали -
метод
items,
который заполняет секцию данными -
класс
LazyListState,
который хранит положение прокрутки