gpt4 book ai didi

android - 在具有 inputType=textPassword 的 EditText 上调用 setSingleLine 使字符可见

转载 作者:行者123 更新时间:2023-11-29 00:51:26 27 4
gpt4 key购买 nike

我在 Activity 的 XML 中放置了一个带有 inputType="textPassword" 的 EditText

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter Password"
android:inputType="textPassword"
android:padding="16dp"
android:id="@+id/passwordInput"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

到目前为止没有任何问题,我看到的是圆圈而不是真正的密码字符:

enter image description here

有趣的部分在这里。现在,如果我在 Activity 的 EditText 上调用 setSingleLine():

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

passwordInput.setSingleLine()
}
}

会看到密码字符出奇地可见!

enter image description here

另一个有趣的事情是,如果我将 android:singleLine="true" 放在 EditText 的 XML 中,就不会发生这个问题。

注意:我知道在密码字段上设置setSingleLine 是没有用的,但我很好奇为什么调用这个函数会有这样的副作用。

最佳答案

我认为这是因为当您调用setSingleLine 时,textview 会将其转换方法从PasswordTransformationMethod 更改为SingleLineTransformationMethodEditText(TextView 的子级)

当时只接受一种转换方法

你可以在这里查看源代码:设置单线() https://android.googlesource.com/platform/frameworks/base/+/jb-mr0-release/core/java/android/widget/TextView.java#6727

按照代码填充调用函数setTransformationMethod

https://android.googlesource.com/platform/frameworks/base/+/jb-mr0-release/core/java/android/widget/TextView.java#1461

关于android - 在具有 inputType=textPassword 的 EditText 上调用 setSingleLine 使字符可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59300842/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com