密码文本字段可见性部分在 jetpack compose 中不起作用

问题描述 投票:0回答:1

为什么当我使用填充密码文本时,可见性部分的 icon.Filled.Visibility 部分无法识别?我应该添加一个实现吗?另外,VisibilityOff部分无法识别,请帮助我

var password by rememberSaveable { mutableStateOf("") }
var passwordHidden by rememberSaveable { mutableStateOf(true) }
TextField(
    value = password,
    onValueChange = { password = it },
    singleLine = true,
    label = { Text("Enter password") },
    visualTransformation =
    if (passwordHidden) PasswordVisualTransformation() else VisualTransformation.None,
    keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password),
    trailingIcon = {
        IconButton(onClick = { passwordHidden = !passwordHidden }) {
            val visibilityIcon =
                if (passwordHidden) Icons.Filled.Visibility else Icons.Filled.VisibilityOff
            // Please provide localized description for accessibility services
            val description = if (passwordHidden) "Show password" else "Hide password"
            Icon(imageVector = visibilityIcon, contentDescription = description)
        }
    }
)
android kotlin android-jetpack-compose android-jetpack jetpack
1个回答
0
投票

因为普通的

androidx.compose.material.icons.Icons
默认不包含它,你必须使用两种方式添加它:

  1. 第一种方法是将此依赖项添加到所有附加图标的项目中:

    dependencies { ... implementation "androidx.compose.material:material-icons-extended:$compose_version" }

  2. 是从android studio的图标手动添加它,你可以通过以下方式完成: 转到

    res/drawable
    文件夹,然后单击鼠标右键,然后
    New/Vector Asset
    弹出一个窗口,默认情况下包含 Android 徽标 单击
    Clip Art
    部分旁边的徽标,将弹出一个带有名称选择图标的窗口,然后您搜索什么单击您想要的图标,然后单击
    Ok
    然后
    Next
    然后
    Finish
    现在图标已添加到您的可绘制文件夹中,您可以像这样使用它:

    Icon(painter = painterResource(id = R.drawable.name_of_icon), contentDescription = "")

注意:确保使用的 R 来自您的包名称。

© www.soinside.com 2019 - 2024. All rights reserved.