小编dev*_*unu的帖子

使用 Android Compose 时如何填充 Lazy Column 中的剩余空间?

我最近在项目中使用了 Compose。\n但是,我觉得 LazyColumn 的工作方式与 xml 有很大不同。

\n

特别是在创建列表时,我想填充topBar和footer之间的剩余空间,但我找不到方法。

\n

下面是我想要实现的页面的简化版本。

\n

在此输入图像描述

\n

topBar 固定在顶部,项目列表绘制在其下方。最后,附上 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 kotlin

10
推荐指数
1
解决办法
3703
查看次数

为什么在视图模型中声明变量时使用下划线 kotlin 约定

在 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。这不符合逻辑。

我想知道使用这种模式是否还有其他原因。

android mvvm viewmodel kotlin

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

标签 统计

android ×2

kotlin ×2

mvvm ×1

viewmodel ×1