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)
)
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)
)