为什么当我使用填充密码文本时,可见性部分的 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)
}
}
)
因为普通的
androidx.compose.material.icons.Icons
默认不包含它,你必须使用两种方式添加它:
第一种方法是将此依赖项添加到所有附加图标的项目中:
dependencies { ... implementation "androidx.compose.material:material-icons-extended:$compose_version" }
是从android studio的图标手动添加它,你可以通过以下方式完成: 转到
res/drawable
文件夹,然后单击鼠标右键,然后 New/Vector Asset
弹出一个窗口,默认情况下包含 Android 徽标 单击 Clip Art
部分旁边的徽标,将弹出一个带有名称选择图标的窗口,然后您搜索什么单击您想要的图标,然后单击 Ok
然后 Next
然后 Finish
现在图标已添加到您的可绘制文件夹中,您可以像这样使用它:
Icon(painter = painterResource(id = R.drawable.name_of_icon), contentDescription = "")
注意:确保使用的 R 来自您的包名称。