kotlin 如何用jetpack compose lazyColumn隐藏XML导航视图

wfypjpf4  于 2023-03-13  发布在  Kotlin
关注(0)|答案(1)|浏览(161)

下面是一段简单的代码

@Composable
    fun SetData() {
        viewModel.data.collectAsState(initial = emptyList())
            .value.let {
                when {
                    it.isEmpty() -> {
                        Text(text = "Empty")
                    }
                    else -> {
                        val scrollableState = rememberLazyListState()
                        Box(modifier = Modifier.fillMaxSize().padding(bottom = 60.dp)) {
                            LazyColumn(
                                state =scrollableState
                            ) {
                                itemsIndexed(it) { _, item ->
                                    DiscussionItem(item)
                                }
                            }
                        }
                    }
                }
            }
    }

我想把这个藏在卷轴上

<com.google.android.material.navigation.NavigationView
        android:id="@+id/navigationView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="?attr/colorSurface"
        app:dividerInsetEnd="0dp"
        app:dividerInsetStart="0dp"
        app:headerLayout="@layout/navigation_slider_header"
        app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
        app:menu="@menu/navigation_slider" />

我只是尝试了不同的这个,但不能得到隐藏或取消隐藏的效果。

bkhjykvo

bkhjykvo1#

尝试此方法

@Composable
fun SetData() {
    viewModel.data.collectAsState(initial = emptyList())
        .value.let {
            when {
                it.isEmpty() -> {
                    Text(text = "Empty")
                }
                else -> {
                    val scrollableState = rememberLazyListState()
                    Box(modifier = Modifier.fillMaxSize().padding(bottom = 60.dp)) {
                        NestedScrollView(
                            modifier = Modifier.fillMaxSize(),
                            behavior = rememberScrollBehavior(),
                            content = {
                                LazyColumn(
                                    state =scrollableState
                                ) {
                                    itemsIndexed(it) { _, item ->
                                        DiscussionItem(item)
                                    }
                                }
                            }
                        )
                        NavigationView(
                            modifier = Modifier.fillMaxHeight(),
                            ...
                        ) {
                            ...
                        }
                    }
                }
            }
        }
}

请注意,您需要导入androidx.core.view.WindowCompat并在活动的onCreate()方法中调用WindowCompat.setDecorFitsSystemWindows(window, false),才能使NestedScrollViewappbar_scrolling_view_behavior一起正常工作

相关问题