Listy w Jetpack Compose Glimmer

Odpowiednie urządzenia z XR
Ten przewodnik pomoże Ci tworzyć aplikacje na te typy urządzeń z XR.
Okulary z wyświetlaczem

W Glimmerze w Jetpack Compose element VerticalList działa podobnie jak element w Compose LazyColumn, ponieważ komponuje i rozmieszcza tylko widoczne elementy, aby zapewnić wysoką wydajność. Jednak w przypadku Glimmera w Jetpack Compose listy pionowe są tworzone z myślą o sterowaniu okularami z wyświetlaczem, w których użytkownik wchodzi w interakcję za pomocą touchpada, a nie ekranu dotykowego. Użytkownik mobilny może w dowolnym momencie dotknąć dowolnego miejsca na ekranie, a użytkownik okularów z wyświetlaczem może wchodzić w interakcję tylko z elementem, który jest zaznaczony.

Rysunek 1. Przykład różnych stylów list w Glimmerze w Jetpack Compose.

Zachowanie zaznaczenia i elementy podrzędne

Listy pionowe są zoptymalizowane pod kątem automatycznego obsługiwania nawigacji opartej na zaznaczeniu. W przeciwieństwie do list na urządzeniach mobilnych, gdzie zaznaczenie i przewijanie są często oddzielne, lista pionowa koordynuje te 2 elementy, przesuwając zaznaczenie przez elementy podrzędne, gdy użytkownik przewija za pomocą touchpada. Sama lista nie jest zaznaczalna, więc zarządza zaznaczeniem i żąda go dla swoich elementów podrzędnych, aby użytkownik miał wyraźny punkt interakcji podczas przewijania.

Ponieważ nie ma bezpośredniego dotykowego wprowadzania danych, wszystkie elementy podrzędne umieszczone na liście pionowej muszą być możliwe do zaznaczenia. Gdy elementy są zaznaczone, należy zapewnić wizualną reakcję, np. aktywną obwódkę lub wyróżnienie. Użytkownicy mogą przewijać elementy, które nie są zaznaczalne, ale nie mogą z nimi wchodzić w interakcję. W miarę możliwości używaj wbudowanych komponentów, takich jak ListItem lub Card w listach pionowych, ponieważ te komponenty są już możliwe do zaznaczenia i zapewniają wizualne informacje zwrotne o stanach zaznaczenia.

Przykład: lista pionowa z kilkoma elementami

Poniższy kod pokazuje, jak używać listy pionowej z metodami DSL `item` i `items` do tworzenia listy elementów:

@Composable
fun VerticalListSample() {
    VerticalList {
        item { ListItem { Text("Header") } }
        items(count = 10) { index -> ListItem { Text("Item-$index") } }
        item { ListItem { Text("Footer") } }
    }
}

Przykład: lista pionowa z miejscem na tytuł

Glimmer w Jetpack Compose udostępnia też przeciążenie listy pionowej, które zawiera miejsce na tytuł. Niezaznaczalny tytuł (zwykle TitleChip) pozostaje statyczny w środku u góry, a zawartość listy przewija się pod nim.

Poniższy kod tworzy listę pionową z miejscem na tytuł:

@Composable
fun VerticalListWithTitleChipSample() {
    val ingredientItems =
        listOf("Milk", "Flour", "Egg", "Salt", "Apples", "Butter", "Vanilla", "Sugar", "Cinnamon")
    VerticalList(title = { TitleChip { Text("Ingredients") } }) {
        items(ingredientItems) { text -> ListItem { Text(text) } }
    }
}

Używanie stanu listy do programowego wykonywania operacji na liście

Użyj elementu ListState, aby kontrolować i obserwować różne aspekty stanu listy , takie jak jej położenie przewijania, za pomocą właściwości firstVisibleItemIndex i firstVisibleItemScrollOffset.

Możesz podnieść ten stan za pomocą elementów rememberListState, aby programowo przewijać za pomocą elementów scrollToItem i animateScrollToItem.