Jetpack Compose: 스와이프 기능이 있는 탭
4527 단어 jetpackcomposeandroidkotlin
탭으로 인터페이스를 만드는 것은 Android 앱 세계에서 매우 일반적입니다.
예전에는 탭 인터페이스를 만들려면 어댑터와 때로는 탭 데이터를 보유하는 조각이 필요했습니다.
하지만 Jetpack Compose를 사용하면 이러한 복잡성이 과거의 일이 됩니다. 탭으로 UI를 빠르고 쉽게 만들 수 있습니다.
물론 과거에는 당연하게 여겼지만 (아직) 기본적으로 지원되지 않는 것들이 있습니다. 탭을 변경하기 위해 스 와이프하는 기능이 그 중 하나입니다. 그러나 두려워하지 마십시오. 라이브러리를 사용하여 이러한 종류의 기능을 얻는 방법이 있습니다.
탭 UI 빌드
탭 버튼을 선택했을 때 탭 스트립을 만들고 콘텐츠를 전환하는 것은 매우 쉽습니다. 외부 종속성이 필요하지 않으며 모든 것이 Compose에 내장되어 있습니다.
@Composable
fun tabs() {
var tabIndex by remember { mutableStateOf(0) } // 1.
val tabTitles = listOf("Hello", "There", "World")
Column { // 2.
TabRow(selectedTabIndex = tabIndex) { // 3.
tabTitles.forEachIndexed { index, title ->
Tab(selected = tabIndex == index, // 4.
onClick = { tabIndex = index },
text = { Text(text = title) }) // 5.
}
}
when (tabIndex) { // 6.
0 -> Text("Hello content")
1 -> Text("There content")
2 -> Text("World content")
}
}
}
Column
를 사용하여 탭 스트립 행과 탭 콘텐츠를 세로로 쌓습니다. TabRow
컴포저블에는 탭 버튼이 포함된 탭 표시줄이 있습니다. Tab
컴포저블로 표시됩니다. Text
을 사용자 정의하여 탭 버튼의 텍스트(예: 글꼴, 색상 등)를 사용자 정의하십시오. 스와이프가 있는 탭
탭이 있는 인터페이스를 볼 때 첫 번째 반응은 왼쪽/오른쪽으로 스와이프하여 나머지 탭을 탐색하는 것입니다. 실제로 탭 제목을 클릭하여 탭을 전환할 수 있다는 사실을 거의 잊었습니다.
이 동작은 탭으로 기본 UI를 빌드하는 이전 예제에는 포함되지 않습니다. 일반적으로 Compose에는 포함되지 않습니다.
고맙게도 Compose에서 필수이지만 누락된 다양한 기능을 제공하는 라이브러리Accompanist가 있습니다. Pager 라이브러리는 이 경우에 필요한 것입니다. 현재 탭 내용을 스와이프하고 탭을 변경할 수 있는 기능을 제공합니다.
install this library 에 다음을
build.gradle
( check for the latest version )에 추가합니다.implementation "com.google.accompanist:accompanist-pager:0.21.2-beta"
implementation "com.google.accompanist:accompanist-pager-indicators:0.21.2-beta"
@ExperimentalPagerApi // 1.
@Preview
@Composable
fun tabsWithSwiping() {
var tabIndex by remember { mutableStateOf(0) }
val tabTitles = listOf("Hello", "There", "World")
val pagerState = rememberPagerState() // 2.
Column {
TabRow(selectedTabIndex = tabIndex,
indicator = { tabPositions -> // 3.
TabRowDefaults.Indicator(
Modifier.pagerTabIndicatorOffset(
pagerState,
tabPositions
)
)
}) {
tabTitles.forEachIndexed { index, title ->
Tab(selected = tabIndex == index,
onClick = { tabIndex = index },
text = { Text(text = title) })
}
}
HorizontalPager( // 4.
count = tabTitles.size,
state = pagerState,
) { tabIndex ->
Text(
tabIndex.toString(),
modifier = Modifier
.fillMaxSize()
.background(Color.White)
)
}
}
}
이제 탭과 탭 사이를 스와이프하는 기능을 사용할 수 있습니다.
즐거운 코딩하세요!
Reference
이 문제에 관하여(Jetpack Compose: 스와이프 기능이 있는 탭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rockandnull/jetpack-compose-tabs-with-swiping-3m7k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)