在以前的材料版本中,我们确实喜欢:-
ModalBottomSheetLayout(sheetContent = ) {
}
Run Code Online (Sandbox Code Playgroud) android android-jetpack-compose android-bottomsheetdialog android-jetpack-compose-material3
我使用 NestedScrollConnection 在 Compose 中创建了一个可折叠标头。一切都很完美,但必须添加一个内容:自动滚动到某个项目。我遇到的问题是,标题(使用 NestedScrollConnection 连接)在触发 animateScrollTo 时不会更新。
从 Android 开发人员文档中找到了类似的版本(这是来自实验性的 Material3 库,但也可能没有):
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
MediumTopAppBar(
title = { Text("Medium TopAppBar") },
navigationIcon = {
Icon(imageVector = Icons.Filled.Menu, contentDescription = "Localized description")
},
scrollBehavior = scrollBehavior
)
},
content = { innerPadding ->
val listState = rememberLazyListState()
val coroutines = rememberCoroutineScope()
LaunchedEffect(key1 = Unit, block = {
coroutines.launch {
delay(5000)
// Starts the scrollTo
listState.animateScrollToItem(50, 0)
}
})
LazyColumn( …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-jetpack-compose-material3 android-jetpack-compose-lazy-column
我已在我的 android compose 项目中从 Material 2 切换到 Material 3:
我有这个依赖项,这是最新的稳定依赖项:
implementation ("androidx.compose.material3:material3:1.0.1")
Run Code Online (Sandbox Code Playgroud)
正如文档中提到的,我应该能够导入和使用 ModalBottomSheet :
但导入时我得到未解决的参考:
import androidx.compose.material3.ModalBottomSheet
Run Code Online (Sandbox Code Playgroud)
我所有其他 M3 组件都很好。
任何人都可以帮助我如何毫无问题地导入 ModalBottomSheet 吗?
android kotlin material-ui android-jetpack-compose android-jetpack-compose-material3
Jetpack Compose 中的滑块允许更改拇指的颜色,但不能更改形状。我正在寻找将拇指形状从圆形更改为矩形的解决方案,如附图所示
我尝试将Slider.kt文件添加到项目中,如此处所述,但奇怪的是,当我将此代码复制到项目中时,出现了很多错误,请参阅随附的屏幕截图
user-interface android slider android-jetpack-compose android-jetpack-compose-material3
我很难尝试更改选定/未选定图标和活动指示器的颜色。这些文档没有示例或正确的 Kdocs,而且我似乎无法在网上找到任何示例(请向我指出您知道的任何示例)。图标只是不改变颜色并保持黑色。
我的NavigationBar看起来像这样:
NavigationBar(
containerColor = NavBarColor,
contentColor = ContentColor, // <-- Can't tell what this is for.
modifier = Modifier
.align(Alignment.BottomCenter)
) {
// ...
destinations.forEachIndexed { index, item ->
NavigationBarItem(
selected = currentDestination?.hierarchy?.any { it.route == item.route } == true,
onClick = {
// ...
},
icon = {
when (index) {
0 -> {
Icon(
imageVector = Icons.Rounded.Add,
contentDescription = stringResource(id = item.description)
)
}
1 -> {
Icon(
imageVector = Icons.Rounded.Home,
contentDescription …Run Code Online (Sandbox Code Playgroud) android material-ui android-jetpack-compose material-you android-jetpack-compose-material3
我不确定我何时或更改了什么,但突然 systemUiController 停止影响我的应用程序中的状态栏颜色。对于上下文,我将伴奏 Insets 库与系统 UI 控制器结合使用,以摆脱状态和导航栏,直到一两个版本之前,它都工作正常,现在它只适用于导航/手势栏。
我通过将所有可组合项放入 ProvideWindowInsets 并将条形颜色设置为透明来实现此目的。由于某种原因,这只适用于导航栏。
为了进行调试,我剥离了应用程序中除 mainActivity 的 onCreate 中的 setContent 之外的所有内容(包括所有服务),并暂时删除了 setContent 中除空主题提供程序之外的所有内容。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
val systemUiController = rememberSystemUiController()
val useDarkIcons = !isSystemInDarkTheme()
SideEffect {
systemUiController.setSystemBarsColor(
color = Color.Transparent,
darkIcons = useDarkIcons
)
}
MicCheckTheme {
ProvideWindowInsets() {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,只有导航栏是透明的。我相信这不是 Insets 库的错,因为虽然状态栏保留其颜色,但应用程序内容位于状态栏下方,因此 Insets 按预期工作。
对于进一步的上下文,我使用 MainActivity 继承 ComponentActivity 与 Material3、Compose 1.2.x 和 accompanist 0.24.9-beta,尽管我在调试时尝试了许多不同的版本,但没有一个有效。我什至创建了一个新的测试应用程序项目,并从伴奏者 github 粘贴了 Insets + SystemUIController 示例应用程序,但即使这样也不起作用。
请帮我!谢谢。
android windowinsets android-jetpack-compose jetpack-compose-accompanist android-jetpack-compose-material3
这是产生这种奇怪行为的代码:
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
Column(
modifier = Modifier.fillMaxSize()
) {
items.forEach { item ->
NavigationDrawerItem(
modifier = Modifier.padding(NavigationDrawerItemDefaults.ItemPadding),
icon = {
Icon(
imageVector = item.icon,
contentDescription = null
)
},
label = {
Text(
text = item.name
)
},
onClick = {},
selected = true
)
}
}
},
content = {
Scaffold(
topBar = {},
content = { padding ->
Box(
modifier = Modifier.fillMaxSize().padding(padding)
) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) { …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-jetpack-compose-material3
我已经实施了pinned顶部应用程序栏滚动容器,它适用于更改滚动时的应用程序栏颜色,但状态栏颜色根本不受影响。
这是我所拥有的:
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
Scaffold(
Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
// just a wrapper for CenterAlignedTopAppBar
StandardTopAppBar("Home", scrollBehavior = scrollBehavior)
}
){ ... }
Run Code Online (Sandbox Code Playgroud)
如果相关,为了检测软键盘是否存在,我启用了:
WindowCompat.setDecorFitsSystemWindows(window, false)
Run Code Online (Sandbox Code Playgroud)
我的状态栏颜色最初在我的Theme. 当我在 android studio 中自动生成项目时,它被设置为原色,但我将其更改为表面颜色以匹配应用程序栏标准:
if (!view.isInEditMode) {
SideEffect {
(view.context as Activity).window.statusBarColor = colorScheme.surface.toArgb()
//(view.context as Activity).window.statusBarColor = colorScheme.primary.toArgb()
ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = !darkTheme // changed from just darkTheme
}
}
Run Code Online (Sandbox Code Playgroud)
太长;博士;顶部应用栏颜色在滚动时会发生变化,但状态栏不会。这里使用的正确模式是什么?我查看了一些代码pinnedScrollBehavior,没有看到任何会调用状态栏更改的内容,所以我想知道是否应该使状态栏透明并更改应用程序栏的插图?或者我应该手动连接滚动逻辑并自己更改颜色?任何帮助表示赞赏!
将构建 gradle 更新为compose_version 1.4.2“androidx.compose.material3:material3:1.0.1”后。我收到以下错误。
FocusRequester 未初始化。以下是一些可能的修复方法:
- 记住 FocusRequester:
val focusRequester = remember { FocusRequester() }- 您是否忘记添加一个
Modifier.focusRequester()?- 您是否试图在构图过程中要求焦点?应针对某些事件发出焦点请求。例如
Modifier.clickable { focusRequester.requestFocus() }
此代码在更新之前有效。
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun EditLocationsScreen(
navController: NavHostController,
casinoViewModel: CasinoViewModel
) {
Scaffold(
topBar = { LocationTopBar(navController = navController)} )
{ paddingValues ->
Spacer(modifier = Modifier.height(10.dp))
Column(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
) {
var expanded by remember { mutableStateOf(false) }
val casinoNames by casinoViewModel.casinoNames.collectAsState(emptyList())
var name by remember { mutableStateOf("") }
val focusRequester = remember …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-jetpack-compose-material3
我正在尝试实现与照片类似的行为。一个可以做同样事情的库也会很有用。我已经尝试过 https://github.com/dokar3/ChipTextField 但遇到了一些问题
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/compose/ui/platform/LocalSoftwareKeyboardController;
Run Code Online (Sandbox Code Playgroud) android kotlin android-chips android-jetpack-compose android-jetpack-compose-material3
android-jetpack-compose-material3 ×10
android ×9
kotlin ×5
material-ui ×2
android-jetpack-compose-lazy-column ×1
jetpack-compose-accompanist ×1
material-you ×1
slider ×1
windowinsets ×1