嗨,当用户单击查看密码按钮时,我正在尝试动态更改 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
我正在尝试制作一个填充屏幕宽度的 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
我正在尝试设置文本字段中最大字符数的限制。这是我尝试过的:
var text by remember { mutableStateOf("") }
val maxLength = 40
TextField(
value = text,
onValueChange = {
text = it.take(maxLength)
}
)
Run Code Online (Sandbox Code Playgroud)
问题是这样的:
如何摆脱这种行为?设置 TextField 文本最大长度的正确方法是什么?
android kotlin android-jetpack-compose android-jetpack-compose-text
我的代码:
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
我使用这个(不再那么好)示例在我的 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
我有一个 Jetpack Compose Text() 元素,我想像这样用黑色勾勒出轮廓
.
有人知道怎么做吗?我试过使用 border() 修饰符,但这只是在包含文本的矩形区域周围添加了一个边框。我也试过覆盖两个文本元素,但这也不太奏效。
android android-jetpack-compose android-jetpack-compose-text
我正在寻找 Jetpack Compose TextField 中 EditText 的 InputFilter 的等效方法。
因为我试图阻止用户输入不需要的值,%@*()-例如字符。
android kotlin android-jetpack android-jetpack-compose android-jetpack-compose-text
我在 Jetpack Compose 应用程序中使用自定义字体,并且希望将特定文本组件中的数字等宽。
对于标准 Android TextView,可以使用fontFeatureSetting="tnum"属性 ( /sf/answers/2880033621/ ) 来完成。
如何使用 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
我正在寻找 jetpack compose 中的阿拉伯符号支持。我想更改一些阿拉伯标点符号的颜色并自定义它们的外观。目前,我正在使用此功能来实现此目的:
\nprivate 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)