我有一个文本和一个可组合的图标.我希望图标位于Composable的右侧.这是我的代码:

Row(
    verticalAlignment = Alignment.CenterVertically,
    horizontalArrangement = Arrangement.Center,
    modifier = Modifier
        .fillMaxWidth()
        .padding(horizontal = 16.dp)
) {
    Text(
        text = subjectName,
        maxLines = 1,
        overflow = TextOverflow.Ellipsis,
        textAlign = TextAlign.Center,
    )
    Icon(
        painter = painterResource(id = R.drawable.ic_arrow_drop_down),
        contentDescription = null
    )
}

对应的用户界面为:

这看起来很好,但是当文本太长并且有溢出时,图标就会像这样离开屏幕:

相反,我想让它看起来像这样:

我try 为Text Composable设置weight(1f)修改器,以便将图标放在第一位.现在,溢出的文本看起来很好,但当文本较短时,图标仍放置在结尾处,因为文本占据了整个剩余宽度:

如何在此处获得所需的用户界面(图1和图3)?

推荐答案

只需将weight(1f, fill=false)修改器应用于Text.

当Fill为true时,元素将被强制占用分配给它的整个宽度.否则,允许元素更小-这将导致行更小,as the unused allocated width will not be redistributed to other siblings.

类似于:

Row(
    verticalAlignment = Alignment.CenterVertically,
    horizontalArrangement = Arrangement.Center,
    modifier = Modifier
        .fillMaxWidth()
        .padding(horizontal = 16.dp)
) {
    Text(
        text = "subjectName",
        modifier = Modifier.weight(1f, false),
        maxLines = 1,
        overflow = TextOverflow.Ellipsis,
    )
    Icon(
        Icons.Filled.Add,
        contentDescription = "contentDescription"
    )
}

enter image description here

Android相关问答推荐

将动作传递给嵌套的可组合物

Android Kotlin DSL Gradle找不到自定义存储库中的依赖项

如何使禁用状态下的material 3按钮与启用状态下的 colored颜色 相同?

在Kotlin Jetpack Compose中点击按钮后启动另一个Android应用程序

尽管我们不再使用GCM SDK,但应用程序已被标记为使用GCM SDK

在Jetpack Compose中实现焦点突出的最佳方式?

Android 不在后台更新位置

Android Studio 在 list 文件中已经声明了活动类,但仍出现无法找到明确的活动类的错误

在 AGP 8.0 中构建失败,无法应用插件realm-android. APIandroid.registerTransform已删除

使用 Kotlin 在 Android 中导航时如何防止 ViewModel 被杀死?

Android apk 不工作

在 Jetpack Compose 中自动滚动后面的项目

导航组件中预期的函数调用map(...)

Jetpack 组合千位分隔符视觉转换,也适用于小数

如何在 Jetpack Compose 中的 VisualTransformation 之后将光标保持在文本字段的末尾

react 从输入中找到路径'lib/arm64-v8a/libfbjni.so'的本机2个文件

Android build gradle 文件版本代码自动递增

如何在 Android 上移动 EditText 上的图标?

如何在 TextInputEdit 中调整可绘制对象的大小

Android Jetpack Compose:如何让文本利用完整的行空间并将单词换行以防溢出?