小编Dan*_*aga的帖子

如何在 Jetpack Compose 中将文本垂直居中、顶部、底部对齐?

如何使用可组合函数垂直对齐文本Text。有没有一种方法可以做到这一点,而不必添加另一个额外的视图来包含Text.

textAlign的参数只有Text以下选项:

TextAlign.

  • 左边
  • 正确的
  • 中心
  • 证明合法
  • 开始
  • 结尾

我尝试过使用textAlign = TextAlign.Center,但它只能水平居中。如何将其垂直居中而不将其包装在另一个视图中?

Text(
    text = "Text",
    modifier = Modifier.size(100.dp),
    textAlign = TextAlign.Center
)
Run Code Online (Sandbox Code Playgroud)

结果:

结果

我想要实现的目标:

我想要达到的目标

android android-jetpack-compose android-jetpack-compose-layout android-compose-layout

30
推荐指数
3
解决办法
2万
查看次数

使用 DiffUtil 在 RecyclerView 上添加拖放

我有一个从房间数据库更新的列表。我从 Room 收到更新后的数据作为新列表,然后将其传递给ListAdaptersubmitList获取更改的动画。

list.observe(viewLifecycleOwner, { updatedList ->
    listAdapter.submitList(updatedList)
})
Run Code Online (Sandbox Code Playgroud)

现在,我想为同一个 RecyclerView 添加拖放功能。我尝试使用它来实现它ItemTouchHelper。但是,notifyItemMoved()由于 ListAdapter 通过 更新其内容,因此无法正常工作submitList()

override fun onMove(
    recyclerView: RecyclerView,
    viewHolder: RecyclerView.ViewHolder,
    target: RecyclerView.ViewHolder
): Boolean {

    val from = viewHolder.bindingAdapterPosition
    val to = target.bindingAdapterPosition

    val list = itemListAdapter.currentList.toMutableList()
    Collections.swap(list, from, to)

    // does not work for ListAdapter
    // itemListAdapter.notifyItemMoved(from, to)

    itemListAdapter.submitList(list)

    return false
}
Run Code Online (Sandbox Code Playgroud)

拖放现在可以正常工作,但只有在缓慢拖动时,当拖动足够快时,我会得到不同且不一致的结果。

屏幕记录

这可能是什么原因?为使用 ListAdapter 的 RecyclerView 实现拖放功能的最佳方法是什么?

android listadapter android-recyclerview

8
推荐指数
1
解决办法
3297
查看次数