A11ySkipListing
data class A11ySkipListing(val listTitle: String, val actionLabel: String, val nextItemFocusRequester: FocusRequester)
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
}