如何在Jetpack Compose中使用accessibilitydatasensitive并设置其标记为Yes
Jetpack Compose 中 AccessibilityDataSensitive 使用说明
1. 如何在Jetpack Compose中使用AccessibilityDataSensitive
AccessibilityDataSensitive是用于标记组件是否包含敏感数据(如密码、支付信息)的无障碍属性,辅助工具(如屏幕阅读器)会根据该标记调整行为,避免泄露敏感内容。
在Jetpack Compose中,你需要通过Modifier.semantics或其扩展函数来配置该属性,核心是操作SemanticsProperties.AccessibilityDataSensitive这个语义属性。
示例场景:给密码输入框标记敏感数据:
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.TextField import androidx.compose.material3.Text import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.accessibilityDataSensitive import androidx.compose.ui.semantics.SemanticsProperties import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation // 方式1:使用扩展修饰符(更简洁) TextField( value = password, onValueChange = { password = it }, label = { Text("密码") }, visualTransformation = PasswordVisualTransformation(), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), modifier = Modifier.accessibilityDataSensitive(AccessibilityDataSensitive.Yes) ) // 方式2:直接在semantics块中配置 TextField( value = password, onValueChange = { password = it }, label = { Text("密码") }, visualTransformation = PasswordVisualTransformation(), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), modifier = Modifier.semantics { this[SemanticsProperties.AccessibilityDataSensitive] = AccessibilityDataSensitive.Yes } )
2. 如何将AccessibilityDataSensitive标记设置为Yes
要将标记设置为Yes,只需在组件的Modifier中指定对应的枚举值即可:
- 使用扩展修饰符:
Modifier.accessibilityDataSensitive(AccessibilityDataSensitive.Yes) - 或在
semantics块内直接赋值:this[SemanticsProperties.AccessibilityDataSensitive] = AccessibilityDataSensitive.Yes
另外,AccessibilityDataSensitive还有另外两个枚举值:
No:明确标记组件不包含敏感数据Auto:默认值,由系统自动判断是否为敏感内容
内容的提问来源于stack exchange,提问作者M.Khouli
相关产品推荐
相关产品推荐

