一、认识TabRow
实现顶部Tab导航需要用到TabRow,所以让我们先来认识下TabRow
@Composable
fun TabRow(
selectedTabIndex: Int, // 当前项
modifier: Modifier = Modifier, // 修饰符
backgroundColor: Color = MaterialTheme.colors.primarySurface, // 背景颜色
contentColor: Color = contentColorFor(backgroundColor), // 内容颜色
// 指示器
indicator: @Composable (tabPositions: List<TabPosition>) -> Unit = @Composable { tabPositions ->
TabRowDefaults.Indicator(
Modifier.tabIndicatorOffset(tabPositions[selectedTabIndex])
)
},
// 分割线
divider: @Composable () -> Unit = @Composable {
TabRowDefaults.Divider()
},
tabs: @Composable () -> Unit // tabs内容
)
二、写一个简单例子
1.定义一个枚举类
/**
* 枚举类
*/
enum class TabBean(@StringRes val titleResId: Int) {
Tab_1(R.string.tab_1),
Tab_2(R.string.tab_2),
Tab_3(R.string.tab_3),
}
2.定义Tab内容类
/**
* Tab内容类
*/
class TabContent(val tab: TabBean, val content: @Composable () -> Unit)
3.定义Tab导航可组合函数
@Composable
fun compose_18() {
// tab1内容
val tab1 = TabContent(TabBean.Tab_1) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text(text = "Tab_1")
}
}
// tab2内容
val tab2 = TabContent(TabBean.Tab_2) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text(text = "Tab_2")
}
}