标签: android-jetpack-compose-text

切换密码字段jetpack compose

嗨,当用户单击查看密码按钮时,我正在尝试动态更改 visualTransformation。我可以设法过滤密码,但无法以纯文本显示。有什么想法吗?这是我到目前为止所得到的。

fun UserInputText(
    keyboardType: KeyboardType = KeyboardType.Text,
    onTextChanged: (TextFieldValue) -> Unit,
    textFieldValue: TextFieldValue,
    visualTransformation: VisualTransformation = VisualTransformation.None,
    borderColor: Color = editTextBorderColor,
    keyboardShown: Boolean,
    onTextFieldFocused: (Boolean) -> Unit,
    focusState: Boolean,
    placeholder: String = "",
    modifier: Modifier = Modifier
) {
    Box(
        modifier = modifier.border(
            width = 2.dp,
            color = borderColor,
            shape = RoundedCornerShape(16.dp)
        )
    ) {
        var lastFocusState by remember { mutableStateOf(FocusState.Inactive) }
        val focusRequester = FocusRequester()
        val focusRequesterModifier = Modifier.focusRequester(focusRequester)

        BasicTextField(
            value = textFieldValue,
            onValueChange = { onTextChanged(it) }, …
Run Code Online (Sandbox Code Playgroud)

android material-design android-textinputlayout android-jetpack-compose android-jetpack-compose-text

6
推荐指数
2
解决办法
2131
查看次数

Jetpack Compose 如何在 BasicTextField 内居中提示和输入

我正在尝试制作一个填充屏幕宽度的 editText,它的提示和输入从屏幕中心开始。

我选择BasicTextField,因为TextField 和OutlinedTextFields 的样式对我来说完全不需要。

我尝试过这样做。

      BasicTextField(
                value = loginId,
                onValueChange = {
                    loginId = it
                },
                decorationBox = {
                     Text(text = "Input your id", modifier = Modifier.align(Alignment.CenterHorizontally).fillMaxWidth())
                },
                modifier = Modifier
                    .fillMaxWidth()
                    .padding(start = 19.dp,
                        bottom = 4.5.dp, end = 19.dp, top = 40.dp)
                    .background(Purple200)
                    .align(Alignment.CenterHorizontally),
            )
Run Code Online (Sandbox Code Playgroud)

这没有效果。我能用这个做什么?

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

6
推荐指数
1
解决办法
6177
查看次数

设置文本最大长度时撰写文本字段的奇怪行为

我正在尝试设置文本字段中最大字符数的限制。这是我尝试过的:

var text by remember { mutableStateOf("") }
val maxLength = 40
TextField(
    value = text,
    onValueChange = {
        text = it.take(maxLength)
    }
)
Run Code Online (Sandbox Code Playgroud)

问题是这样的:

  • 当我超过限制时,整个文本突然被清除。
  • 这种情况只发生一次,即当我重新输入并超出限制时,它就停在那里(这是所需的行为)
  • 40 在这里似乎是一个神奇的数字,因为对于 maxLength = 39 或更低,一切正常。当我将限制设置为 40 或更高时,我看到了这种奇怪的行为。(这个神奇的数字似乎并不取决于文本字段宽度,因为我尝试了纵向和横向模式,结果是相同的)

如何摆脱这种行为?设置 TextField 文本最大长度的正确方法是什么?

在此输入图像描述

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

6
推荐指数
1
解决办法
3099
查看次数

如何更改 Android Jetpack Compose 中的 OutlineTextField 边框宽度?

我的代码:

OutlinedTextField(
     value = state.value,
     onValueChange = { state.value = it },
     modifier = Modifier.fillMaxWidth().padding(start = 30.dp, end = 30.dp),
     label = { Text(text = "Something", fontSize = 14.sp) },
     shape = RoundedCornerShape(12.dp),
)
Run Code Online (Sandbox Code Playgroud)

我想增加边框宽度,以便支持颜色focusedBorderColor, 。disabledBorderColor

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

6
推荐指数
1
解决办法
6563
查看次数

AnnotatedString 的开始和结束索引因语言而异

我使用这个(不再那么好)示例在我的 Android Jetpack Compose Text 可组合项上启用链接化(请参阅“ClickableText 处理文本上的链接”部分)。

到目前为止,对于一种语言来说,这很容易并且很好。正如您在 AnnotatedString.Builder 中看到的:

addStyle(
    style = SpanStyle(
        textDecoration = TextDecoration.Underline
    ),
    start = 8,
    end = 15
)
addStringAnnotation(
    tag = uriTag,
    annotation = "https://developer.android.com/jetpack/compose",
    start = 8,
    end = 15
)
Run Code Online (Sandbox Code Playgroud)

我必须输入开始和结束索引才能通过下划线突出显示链接。想象一下我有多种字符串语言资源,我只想链接网站网站

 "My website" 
 "Meine Webseite"
Run Code Online (Sandbox Code Playgroud)

上面的英文字符串的起始索引和结束索引为 4 到 10。

较低的德语字符串有 7 到 14。这对于多语言资源来说不太有用。如何在不计算索引的情况下更轻松地链接我的文本可组合项。

(请注意:我只想使用自然库 andoridx.* kotlin.*。其他 3rd 方库将被忽略)

android textview androidx android-jetpack-compose android-jetpack-compose-text

6
推荐指数
1
解决办法
1360
查看次数

如何在 Jetpack Compose 中勾勒文本

我有一个 Jetpack Compose Text() 元素,我想像这样用黑色勾勒出轮廓 这个.
有人知道怎么做吗?我试过使用 border() 修饰符,但这只是在包含文本的矩形区域周围添加了一个边框。我也试过覆盖两个文本元素,但这也不太奏效。

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

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

Jetpack Compose 相当于 InputFilter?

我正在寻找 Jetpack Compose TextField 中 EditText 的 InputFilter 的等效方法。

因为我试图阻止用户输入不需要的值,%@*()-例如字符。

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

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

Jetpack Compose Text 组件中的等宽数字

我在 Jetpack Compose 应用程序中使用自定义字体,并且希望将特定文本组件中的数字等宽。

对于标准 Android TextView,可以使用fontFeatureSetting="tnum"属性 ( /sf/answers/2880033621/ ) 来完成。

如何使用 Jetpack Compose 做到这一点?

倒计时时钟

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

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

Jetpack Compose:如果文本不合适,请使用不同的布局?

假设我有一个固定大小的矩形,里面有一些文本。由于用户可以从设备上的系统 - 辅助功能设置中更改字体大小,因此字体可能不适合固定大小的矩形。如果发生这种情况,我们希望将文本渲染在矩形之外。

据我所知,我应该以某种方式测量文本的宽度(例如),看看它是否适合矩形,如果不适合,则以不同的方式布局组件。

我该如何在 Jetpack Compose 中执行此操作?

因此,使用这个伪代码,如果text不适合在里面,Box我想在它下面放置文本,从而引入一个Column等。

@Composable
fun myView() {
  val text = Text("Some text")
  Box(modifier = Modifier.size(40.dp)) {
      text
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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
查看次数