Giu*_*ime 5 android android-view android-jetpack android-jetpack-compose
我需要使用 androidx 中的 emoji2-emojipicker,它是通过 XML 视图制作的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/emoji_picker_header"
android:layout_width="wrap_content"
android:layout_height="@dimen/emoji_picker_header_height"
android:paddingEnd="@dimen/emoji_picker_header_padding"
android:paddingStart="@dimen/emoji_picker_header_padding" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/emoji_picker_body"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
(来源https://github.com/androidx/androidx/tree/androidx-main/emoji2/emoji2-emojipicker和https://developer.android.com/jetpack/androidx/releases/emoji2)
我在撰写中像这样使用它:
AndroidView(
factory = { context ->
EmojiPickerView(context)
},
modifier = Modifier
.fillMaxWidth()
.height(300.dp)
)
Run Code Online (Sandbox Code Playgroud)
在脚手架或柱子等普通表面上使用表情符号选择器没有任何问题,它滚动得非常好并且不会滞后。
如果我将表情符号选择器放入另一个可滚动可组合项(例如 )中ModalBottomSheet,它就不再滚动。
为了使其滚动,我需要添加修饰符,verticalScroll(rememberScrollState())但这AndroidView会使其变得滞后并且需要很长时间才能加载+如果我使其像那样可滚动,则表情符号选项卡由于某种原因无法工作。
我猜它是滞后的,因为我告诉RecyclerView它有无限的高度,所以它会立即渲染所有表情符号,而不是懒惰地渲染。
阅读周围的内容,当 RecyclerView 位于另一个可滚动可组合项中时,滚动事件似乎无法通过子父可组合项正确传播。关于如何解决这个问题有什么建议吗?
这是一个演示,显示了一个可以正常工作的屏幕(任务屏幕)和一个不能正常工作的屏幕ModalBottomSheet: https: //drive.google.com/file/d/1vU94uPwBTtpDg8hb0JauqZmw-LHyP9Mz/view ?usp=sharing(在此视频中,我verticalScroll在 ModalBottomSheet emojipicker 中添加了修饰符,使其可滚动,否则它不会滚动,而任务中的修饰符没有该修饰符)
小智 0
为了确保在底部工作表内滚动,请设置要滚动的回收器或视图
recycler.isNestedScrollingEnabled = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
433 次 |
| 最近记录: |