小编ngl*_*ber的帖子

如何从 Jetpack Compose TextField 关闭虚拟键盘?

我正在使用 Jetpack Compose TextField,我想在用户按下操作按钮(imeActionPerformed参数)时关闭虚拟键盘。

val text = +state { "" }
TextField(
    value = text.value,
    keyboardType = KeyboardType.Text,
    imeAction = ImeAction.Done,
    onImeActionPerformed = { 
        // TODO Close the virtual keyboard here <<<
    }
    onValueChange = { s -> text.value = s }
)
Run Code Online (Sandbox Code Playgroud)

android android-input-method kotlin android-jetpack-compose android-compose-textfield

19
推荐指数
4
解决办法
5424
查看次数

如何在 Compose 中向文本添加可绘制对象?

正如在 XML 中我们过去向 a 添加一个可绘制对象一样,那么Jetpack Compose 中的,TextView​​ 相当于什么?除了使用之外,还有什么简单的方法可以实现这一目标吗?android:drawableLeftandroid:drawableRightTextRow { Image() Text() }

android android-jetpack-compose

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

如何使用CameraX设置正确的纵横比?

我正在使用CameraX代码实验室,即使使用setTargetAspectRatiosetTargetResolution方法,预览中的纵横比也错误。

private fun startCamera() {
    // Create configuration object for the viewfinder use case
    val previewConfig = PreviewConfig.Builder().apply {
        setTargetAspectRatio(Rational(1, 1))
        setTargetResolution(Size(640, 640))
    }.build()
    ...
Run Code Online (Sandbox Code Playgroud)

布局使用的是硬编码的大小,如代码实验室中所示。

<TextureView
    android:id="@+id/view_finder"
    android:layout_width="640px"
    android:layout_height="640px"
    ...
Run Code Online (Sandbox Code Playgroud)

如果库具有CameraTextureView和属性android:scaleType(类似于的现有属性ImageView),可以将预览调整为预览大小,那就太好了。

CameraX错误的宽高比

android android-jetpack android-camerax

7
推荐指数
1
解决办法
1750
查看次数

Jetpack Compose Column 中的 fillViewPort 行为

ScrollView fillViewPortJetpack Compose 中是否有类似的东西Column

看这个例子:

@Composable
fun FillViewPortIssue() {
    Column(
        Modifier
            .fillMaxSize()
            .padding(16.dp)
    ) {
        for (i in 0..5) {
            Box(
                modifier = Modifier
                    .padding(vertical = 8.dp)
                    .background(Color.Red)
                    .fillMaxWidth()
                    .height(72.dp)
            )
        }
        Spacer(modifier = Modifier.weight(1f))
        Button(
            modifier = Modifier.fillMaxWidth(),
            onClick = { /*TODO*/ }
        ) {
            Text("Ok")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是结果:

在此处输入图片说明

当设备处于横向时,内容被裁剪,因为没有滚动。如果我添加verticalScroll修饰符,请执行Column...

    ...
    Column(
        Modifier
            .verticalScroll(rememberScrollState()) // <<-- this
            .fillMaxSize()
            .padding(16.dp)
    ) {
    ...
Run Code Online (Sandbox Code Playgroud)

...滚动问题已修复,但按钮上升,就像这样。

在此处输入图片说明

在传统的工具包中,我们可以使用ScrollView+fillViewPort属性来解决这个问题。有什么等同于 Compose 的东西吗?

android android-jetpack-compose

5
推荐指数
2
解决办法
325
查看次数

Jetpack compose - 阿拉伯语 (RTL) 标点符号注释字符串错误

我正在寻找 jetpack compose 中的阿拉伯符号支持。我想更改一些阿拉伯标点符号的颜色并自定义它们的外观。目前,我正在使用此功能来实现此目的:

\n
private fun colorPonctuation(input: String): AnnotatedString {\n    return buildAnnotatedString {\n        input.forEach {\n            if (it == \'\\u064B\' || it == \'\\u064D\'\n                || it == \'\\u064D\' || it == \'\\u064E\' || it == \'\\u064F\' ||\n                it == \'\\u0650\' || it == \'\\u0651\' || it == \'\\u0652\' || it == \'\\u0653\' ||\n                it == \'\\u0654\' || it    == \'\\u0655\' || it == \'\\u0656\' || it == \'\\u0657\' ||\n                it == \'\\u0658\' || it == \'\\u0659\' || it == \'\\u065A\' …
Run Code Online (Sandbox Code Playgroud)

android-jetpack-compose android-jetpack-compose-text

5
推荐指数
0
解决办法
514
查看次数

在 Jetpack Compose 中选择 TextField 的所有文本

我在 Jetpack Compose 中使用 TextField 组件。获得焦点时如何选择所有文本?

textfield kotlin android-jetpack-compose

3
推荐指数
3
解决办法
228
查看次数

如何使用 Coil + Compose 来单元测试图像是否已加载

我正在使用Coil for Compose加载图像,如下所示。

@Composable
fun SvgImageSample() {
    val painter = rememberAsyncImagePainter(
        model = ImageRequest.Builder(LocalContext.current)
            .decoderFactory(SvgDecoder.Factory())
            .data("https://someserver.com/SVG_image.svg")
            .size(Size.ORIGINAL)
            .build()
    )
    Image(
        painter = painter,
        modifier = Modifier.size(100.dp).testTag("myImg"),
        contentDescription = null
    )
}
Run Code Online (Sandbox Code Playgroud)

图像已正确加载。现在,我想编写一个测试来检查图像是否已加载。有没有现成的断言

像这样的东西:

class MyTest {
    @get:Rule
    val composeTestRule = createComposeRule()

    @Test
    fun checkIfTheImageLoads() {
        composeTestRule.setContent {
            MyAppThemeTheme {
                SvgImageSample()
            }
        }
        composeTestRule.onNodeWithTag("myImg")
            .assertCoilImageIsLoaded() // <- this is what I want
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose coil android-jetpack-compose-testing

3
推荐指数
1
解决办法
1793
查看次数