Sco*_*ggs 2 passwords user-interface android android-edittext
通常设置inputType=textPassword用户可以在其中输入任何有风险的内容的字段,例如......密码。当用户键入时,他们键入的每个字符都会短暂闪烁,让用户知道实际输入的内容,然后变成星号,以便临时观察者(间谍)更难以看到键入的内容。
一般来说,这工作得很好。
我有一个特定的情况,出于安全原因,该字符不得闪烁。相反,我想简单地显示星号。
我可以通过 单独处理每个水龙头setOnKeyListener(),但这似乎应该很容易。但是我没有看到任何内置解决方案。请告诉我我错过了一些东西。
感谢所有评论、鼓励和指出优秀建议的人。利用这些宝贵的帮助,我能够做一些实际上非常简单的事情,并且似乎非常适合这种情况。
诀窍是重写PasswordTransformationMethod 并强制您的EditText 使用这个新的。原始charAt()方法使用 Spannable,在隐藏之前等待一秒半。通过重写该方法,您的代码可以做更简单的事情。
这是自定义类的示例(在 kotlin 中)
class ReallyHideMyPassword : PasswordTransformationMethod() {
companion object {
const val HIDE_CHAR = '*'
}
override fun getTransformation(source: CharSequence, view: View): CharSequence {
return PasswordCharSequence(source)
}
inner class PasswordCharSequence (private val source: CharSequence) : CharSequence {
override val length: Int
get() = source.length
override fun get(index: Int): Char = HIDE_CHAR
override fun subSequence(startIndex: Int, endIndex: Int): CharSequence {
return source.subSequence(startIndex, endIndex)
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在您的 EditText 中使用它:
val et = findViewById<EditText>(R.id.my_password_edittext)
et.transformationMethod = ReallyHideMyPassword();
Run Code Online (Sandbox Code Playgroud)
事实证明,这与/sf/answers/1617713611/类似(感谢 Per.J!),但现在你在 kotlin 中拥有了它。它是如此相似,以至于这个问题可能会因为太相似而被关闭。但问题的措辞应该比其他帖子更容易帮助人们找到答案。
| 归档时间: |
|
| 查看次数: |
906 次 |
| 最近记录: |