Jetpack 撰写 TextField RTL 支持

Jetpack compose TextField RTL support

XMLTextField,自动响应RTL文本并右对齐。

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/textview_first"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="سلااااااممممممم"
        app:layout_constraintBottom_toTopOf="@id/button_first"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

*

但是,在 Compose TextField 中,它是靠左的。 有什么方法可以让 TextField 将 RTL 文本右对齐,LTR 文本左对齐?

您必须在 textStyle textStyle = TextStyle(color = Color.Black, textDirection = TextDirection.ContentOrLtr)

上添加 textDirection
BasicTextField(
                value = text,
                onValueChange = {
                text = it
                onSearch(it)
            },
                maxLines = 1,
                singleLine = true,
                textStyle = TextStyle(color = Color.Black, textDirection = TextDirection.ContentOrLtr),
                modifier = Modifier
                    .fillMaxWidth()
                    .shadow(5.dp, CircleShape)
                    .background(Color.White, CircleShape)
                    .padding(horizontal = 20.dp, vertical = 12.dp)
                    .onFocusChanged {
                        isDisableHint = it.isFocused && text.isEmpty()
                    }
            ) 

更新了我的回答:我认为它会解决你的问题

textStyle = TextStyle(color = Color.Black, textDirection = TextDirection.ContentOrLtr)

根据@Poran 的回答,您必须将 textStyle 添加到 TextField :

TextField(
   value = name,
   ...
   textStyle = TextStyle(color = Color.Black, textDirection = TextDirection.Content)
)