小编Abh*_*bhi的帖子

用于文本选择的浮动工具栏 Jetpack Compose

如何在 Jetpack Compose 中将选定文本的菜单自定义到 TextField?我的意思是这样的:

例子

在官方文档或互联网上没有找到任何有关如何使用 Jetpack Compose 执行此操作的信息。

android kotlin android-jetpack android-jetpack-compose

9
推荐指数
1
解决办法
3968
查看次数

在基于 Xml 的活动中显示使用 ComposeView 制作的自定义对话框 - Jetpack Compose - Android

在我的活动类中,其布局使用 xml 设置,我想显示一个对话框。\xc4\xb1n 这个对话框我想使用 Jetpack Compsose。这可能吗 ?我的代码如下,并且出现以下崩溃:

\n
java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from android.widget.RelativeLayout{910e78c V.E...... ......I. 0,0-0,0}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的活动课:

\n
class MainActivity : AppCompatActivity() {\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_main)\n\n        val button = findViewById<android.widget.Button>(R.id.buttonPuppyInfo)\n        button.text = "Open dialog"\n\n        val dialog =  Dialog(this@MainActivity)\n        dialog.setContentView(R.layout.custom_dialog);\n        val composeView = dialog.findViewById<ComposeView>(R.id.composeView)\n        composeView.setContent {\n            Button(\n                onClick = {\n                    // Change the state to close the dialog\n                    //setShowDialog(false)\n                },\n            ) {\n                Text("Superrr")\n            }\n        }\n\n        button.setOnClickListener {\n            dialog.show();\n        }\n\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

下面是我的custom_dialog.xml

\n
<?xml version="1.0" …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

9
推荐指数
1
解决办法
3109
查看次数

为什么有些人仍然在 jetpack compose 中使用 viewmodel?

我在 YouTube 上观看了一些教程项目,其中一些制作了 viewmodel 文件并编写了一些代码,只是为了使用 viewmodel!

我们有rememberand rememberSavableand stateand recomposition and ... 在 jetpack 中组成。那么为什么还有人使用 viewmodel 呢?!它有更多的代码,使我们初学者更难以理解该项目。

我猜他们几乎没学过 XML 的视图模型,而且他们不能就这么忘记它!

在jetpack compose中是否可以以我们不需要使用viewmodel的方式编写代码?

viewmodel android-viewmodel android-jetpack android-jetpack-compose

9
推荐指数
1
解决办法
2064
查看次数

将回收者视图数据中的 onMove() 更改更新到房间数据库

根据一些文章,我正在尝试使用以下内容创建一个 android 应用程序:

  • recyclerview使用实时数据从房间数据库中获取数据的A。
  • 数据结构是一个自定义对象列表,具有用于对数据进行排序的属性。

recyclerview 中的功能:

  • 拖放以重新排序数据
  • 滑动删除
  • 用于滑动删除的撤消操作

参考文章:

  1. 用于房间数据库和实时数据的 Google 代码实验室
  2. AndroidHive 文章 recyclerview 滑动删除和撤消恢复已删除的项目
  3. Paul Burke 的中篇文章,用于在回收站视图中拖放
  4. Paul Burke 的中篇文章,用于在回收站视图中自定义拖动的项目
  5. SO Post 以检测回收站视图中的丢弃事件

我的问题:
房间库中的数据重新排序未更新。

注意:
我使用属性进行数据排序

如果需要特定文件的代码,请发表评论。我不确定要发布哪个代码。

MainFragment.java (重新排序数据的代码,不起作用)

// To handle recycler view item dragging
@Override
public void onItemMove(int fromPosition, int toPosition) {

    // Log
    Log.e(TAG, "Item moved from " + fromPosition + " to " + toPosition);

    // Move the item within the recycler view
    mainRecyclerViewAdapter.moveItem(fromPosition, toPosition);
}

// To handle recycler …
Run Code Online (Sandbox Code Playgroud)

android drag-and-drop android-recyclerview android-room

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

Kotlin 中的 .kt 和 .kts 文件有什么区别。我们什么时候应该使用 .kts 文件而不是 .kt 文件?

在 Kotlin 中使用 .kts 文件的目的是什么?发布应用程序时,这些文件是否包含在应用程序包中?

在此处输入图片说明

android kotlin gradle-kotlin-dsl

8
推荐指数
2
解决办法
4138
查看次数

处理 jetpack compose 中数据列表可变状态的正确方法

对于包含这样的整数的可变状态,

var data by rememberSaveable {
    mutableStateOf(-1)
}
Run Code Online (Sandbox Code Playgroud)

我们可以使用更新数据

data = 5
Run Code Online (Sandbox Code Playgroud)

它会更新数据并触发重组。

现在,我的要求是记住一个整数列表

像这样声明,

var data by rememberSaveable {
    mutableStateOf(mutableListOf<Int>())
}
Run Code Online (Sandbox Code Playgroud)

clear()add()、 等列表操作remove()会更新列表中的数据,但不会触发重组,因为列表实例仍然相同。

为了解决这个问题,我用这些赋值替换了以下列表操作。

  1. 代替data.clear(), 使用data = arrayListOf()
  2. 代替data.add(ele), 使用data = mutableListOf(*data.toTypedArray(), ele)

同样,为了remove()尝试这个,

data.remove(ele)
data = mutableListOf(*data.toTypedArray())
Run Code Online (Sandbox Code Playgroud)

但这并没有触发重组。

正确的替代方案是什么remove()
是否有通用的方法来处理所有列表操作?

android android-jetpack-compose

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

Jetpack Compose Spacer 的背景颜色未显示在屏幕上

我正在尝试用这种设计制作一张卡片

设计

这是我正在尝试执行的代码。

Row(
    horizontalArrangement = Arrangement.Start, 
    modifier = Modifier.background(Color.Cyan)
) {
    Spacer(
        modifier = Modifier
            .padding(start = 16.dp)
            .background(Color.White)
            .fillMaxHeight()
            .width(16.dp)
    )

    Column(verticalArrangement = Arrangement.SpaceAround) {
        Text(text = "Title")
        Text(
            text = text
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

预览准确地显示了我想要做的事情。但屏幕上未显示垫片

android android-jetpack-compose

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

在 Jetpack Compose 中自定义 Switch 可组合项的选定/未选定背景?

我正在使用 Switch Composable,我想为其提供选定和未选定状态的自定义背景。我怎样才能做到这一点?

var switchState by remember { mutableStateOf(false) }

Switch(
   checked = switchState,
   onCheckedChange = { switchState = !switchState }                          
)
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-switch

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

如何限制键盘 Enter 键不允许在下一行输入(Android Jetpack Compose 中的 TextField)

在 Android 模拟器中,使用计算机键盘输入,但我键盘上的“Enter”键应该接受输入并执行操作。相反,输入允许我进入下一行,并继续继续下一行(作为新行字符)。请在 TextField 元素的 Android Jetpack Composable 中向我建议您的答案。

android kotlin android-jetpack-compose android-compose-textfield

8
推荐指数
2
解决办法
2540
查看次数

Jetpack compose 中的活动视图模型

在片段中,我们有

private val activityViewModel: MainActivityViewModel by activityViewModels()
private val fragmentViewModel: MainFragmentViewModel by viewModels()
Run Code Online (Sandbox Code Playgroud)

获取整个应用程序中的共享视图模型(活动视图模型)和视图特定视图模型(片段视图模型)的实例。

我正在迁移以作曲。

如何在jetpack compose中获得两个具有不同范围的视图模型?

文档中,我可以看到这一行,

viewModel() 返回一个现有的 ViewModel 或在给定范围内创建一个新的 ViewModel。

但是,如何指定视图模型的范围?

PS
我已经解决了这个类似的问题,但没有任何答案。

android android-jetpack-compose

7
推荐指数
2
解决办法
8639
查看次数