标签: android-jetpack-compose-material3

我在使用jetpack compose的material3中找不到ModalBottomSheetLayout?

更新

我们终于在 Material3 中拥有了 BottomSheet,遵循这个 ans链接

最近我使用 `material3` 和 `jetpack compose` 创建了一个项目,但是当我尝试导入 `ModalBottomSheetLayout` 但我找不到它。是否有“material3 中的替代品”?

在以前的材料版本中,我们确实喜欢:-

ModalBottomSheetLayout(sheetContent = ) {
        
    }
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-bottomsheetdialog android-jetpack-compose-material3

5
推荐指数
1
解决办法
4720
查看次数

撰写nestedScrollConnection 不会被动画滚动触发

我使用 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

5
推荐指数
0
解决办法
1519
查看次数

Material 3 中的 ModalBottomSheet 用于撰写

我已在我的 android compose 项目中从 Material 2 切换到 Material 3:

我有这个依赖项,这是最新的稳定依赖项:

implementation ("androidx.compose.material3:material3:1.0.1")
Run Code Online (Sandbox Code Playgroud)

正如文档中提到的,我应该能够导入和使用 ModalBottomSheet :

https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#ModalBottomSheet(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.material3.SheetState,androidx.compose. ui.graphics.Shape,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.unit.Dp,androidx.compose.ui.graphics.Color,kotlin.Function0, kotlin.Function1)

但导入时我得到未解决的参考:

import androidx.compose.material3.ModalBottomSheet
Run Code Online (Sandbox Code Playgroud)

我所有其他 M3 组件都很好。

任何人都可以帮助我如何毫无问题地导入 ModalBottomSheet 吗?

android kotlin material-ui android-jetpack-compose android-jetpack-compose-material3

5
推荐指数
1
解决办法
3220
查看次数

在 Slider Jetpack compose 中更改拇指的圆形形状

Jetpack Compose 中的滑块允许更改拇指的颜色,但不能更改形状。我正在寻找将拇指形状从圆形更改为矩形的解决方案,如附图所示

在此输入图像描述

我尝试将Slider.kt文件添加到项目中,如此处所述但奇怪的是,当我将此代码复制到项目中时,出现了很多错误,请参阅随附的屏幕截图

在此输入图像描述

user-interface android slider android-jetpack-compose android-jetpack-compose-material3

4
推荐指数
1
解决办法
2967
查看次数

如何在 Jetpack Compose 中设置“NavigationBar()”和“NavigationBarItem()”主题?

我很难尝试更改选定/未选定图标和活动指示器的颜色。这些文档没有示例或正确的 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

4
推荐指数
1
解决办法
2735
查看次数

SystemUIController 不会设置状态栏颜色 - Jetpack Compose Accompanist

我不确定我何时或更改了什么,但突然 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

4
推荐指数
1
解决办法
1867
查看次数

ModalNavigationDrawer 在 Jetpack Compose 中不会完全崩溃

这是产生这种奇怪行为的代码:

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

4
推荐指数
1
解决办法
1161
查看次数

Jetpack Compose:顶部应用栏滚动行为不改变状态栏颜色

我已经实施了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,没有看到任何会调用状态栏更改的内容,所以我想知道是否应该使状态栏透明并更改应用程序栏的插图?或者我应该手动连接滚动逻辑并自己更改颜色?任何帮助表示赞赏!

android-jetpack-compose android-jetpack-compose-material3

4
推荐指数
1
解决办法
2030
查看次数

FocusRequester 未使用 M3 中的 ExposedDropdownMenuBox 进行初始化

将构建 gradle 更新为compose_version 1.4.2“androidx.compose.material3:material3:1.0.1”后。我收到以下错误。

FocusRequester 未初始化。以下是一些可能的修复方法:

  1. 记住 FocusRequester:val focusRequester = remember { FocusRequester() }
  2. 您是否忘记添加一个Modifier.focusRequester()
  3. 您是否试图在构图​​过程中要求焦点?应针对某些事件发出焦点请求。例如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

4
推荐指数
1
解决办法
1211
查看次数

Jetpack compose:带有 Chips 的 TextField

jetpack 中带有芯片的文本字段组成

我正在尝试实现与照片类似的行为。一个可以做同样事情的库也会很有用。我已经尝试过 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

4
推荐指数
1
解决办法
724
查看次数