jetpack compose使用封装一个顶部栏TitleBar,请给出示例代码
时间: 2024-09-14 11:12:37 浏览: 122
Jetpack Compose 提供了一套组件化的界面构建工具,对于创建自定义的 UI 元素,如顶部栏 (TitleBar),可以很容易地通过 `TopAppBar` 组件来实现。以下是一个简单的示例代码:
```kotlin
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.TextOverflow
@Composable
fun CustomTitleBar(onNavigate: () -> Unit) {
TopAppBar(
title = {
Text("应用标题", style = MaterialTheme.headline6)
.padding(start = 16.dp, end = 16.dp)
.fillMaxSize()
.align(Alignment.CenterStart)
},
elevation = 4.dp,
backgroundColor = MaterialTheme.colors.primary,
actions = {
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
spacing = 8.dp,
) {
IconButton(onClick = { navigate() }) {
Icon(Icons.Filled.Menu, contentDescription = "导航")
}
IconButton(onClick = { /*其他操作*/ }) {
Icon(Icons.Filled.Search, contentDescription = "搜索")
}
}
}
)
}
// 使用示例
@Composable
fun MyScreen(navigate: () -> Unit) {
Scaffold(
topBar = { CustomTitleBar(navigate) }
) {
// 应用内容...
}
}
```
在这个例子中,我们定义了一个名为 `CustomTitleBar` 的自定义组件,它包含一个文本标题、两个操作按钮,并在点击时触发 `onNavigate` 回调。然后在主屏幕 (`MyScreen`) 中使用 `Scaffold` 包裹并设置顶部栏。
阅读全文