我最近在项目中使用了 Compose。\n但是,我觉得 LazyColumn 的工作方式与 xml 有很大不同。
\n特别是在创建列表时,我想填充topBar和footer之间的剩余空间,但我找不到方法。
\n下面是我想要实现的页面的简化版本。
\n\ntopBar 固定在顶部,项目列表绘制在其下方。最后,附上 FooterView。可滚动区域包括itemList和FooterView。
\n使用xml时,我将RecyclerView放在nestedScrollView中,并将权重设置为1。然后\xe2\x80\x8b\xe2\x80\x8b列表的区域展开,页脚自动推到最后。
\n但是,在 Compose 中使用 LazyColumn 时,由于 LazyListScope 的原因,列表的范围无法扩展。
\n如果不使用lazyColumn并且权重设置为1,则部分项目列表不可见。或者,如果不使用lazyColumn并且没有给出权重,则页脚不会附加到底部。
\n最近我花了大部分时间试图解决这个问题。\n我需要一些关于如何实现这样的布局的帮助。谢谢。
\n在 Android 蓝图示例的视图模型中,Google 使用了以下模式:
private val _dialog = MutableLiveData<Dialog>()
val dialog : LiveData<FindaDialogFragment> = _dialog
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了原因。总之,我们限制了访问,以便片段和活动无法修改 viewModel 中的数据。
我理解但无法同情。真的只有一个原因吗?如果是这样,viewModel 中的代码将会更长,以限制对变量的访问。
private val name = MutableLiveData<String>()
Run Code Online (Sandbox Code Playgroud)
另外,在 2 路数据绑定中,仅使用 MutableLiveData。这不符合逻辑。
我想知道使用这种模式是否还有其他原因。