A11ySkipListing

data class A11ySkipListing(val listTitle: String, val actionLabel: String, val nextItemFocusRequester: FocusRequester)(source)

Used to skip listing when a list of components is too large

Samples

import android.widget.Toast
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.focusable
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import net.ikea.skapa.R
import net.ikea.skapa.foundation.*
import net.ikea.skapa.ui.components.Button
import net.ikea.skapa.ui.components.Carousel
import net.ikea.skapa.ui.components.CarouselVariant
import net.ikea.skapa.ui.components.DismissParams
import net.ikea.skapa.ui.util.A11ySkipListing

fun main() { 
   //sampleStart 
   val listState = rememberLazyListState()
val listItem: List<ImageItem> = listOf(
    ImageItem(painterResource(id = R.drawable.ic_button_danger), "image 1"),
    ImageItem(painterResource(id = R.drawable.ic_button_danger), "image 2"),
    ImageItem(painterResource(id = R.drawable.ic_button_danger), "image 3")
)
val context = LocalContext.current
val a11ySkipListing = A11ySkipListing("Carousel", "Skip listing", remember { FocusRequester() })

SkapaTheme2(isSystemInDarkTheme()) {
    Column(verticalArrangement = Arrangement.SpaceBetween) {
        Carousel(
            count = listItem.size,
            state = listState,
            variant = CarouselVariant.SlideShow,
            dismissParams = null,
            a11ySkipListing = a11ySkipListing
        ) { page ->
            Image(
                modifier = Modifier
                    .clickable { Toast.makeText(context, "Do something", Toast.LENGTH_LONG).show() },
                painter = listItem[page].image,
                contentDescription = listItem[page].contentDes,
                contentScale = ContentScale.FillWidth
            )
        }
        Text(
            text = "Next focusable element",
            modifier = Modifier
                .focusRequester(a11ySkipListing.nextItemFocusRequester)
                .focusable(true)
        )
    }
} 
   //sampleEnd
}

Constructors

Link copied to clipboard
constructor(listTitle: String, actionLabel: String, nextItemFocusRequester: FocusRequester)

Properties

Link copied to clipboard

label of the custom action

Link copied to clipboard

title of the list of component

Link copied to clipboard

Focus requester, assigned to the Item you want to move focus to