我们可以在用户收到警告错误时隐藏passwordToggle并在用户用一些数据填充EditText时显示回来,看看这张图片
如果我试过这个
if (etPassNow.length() == 0){
etPassNow.setError("No data");
textInputLayout.setPasswordVisibilityToggleEnabled(false);
}
然后结果就像这样
有没有人见过这个问题?谢谢
这是我的xml
<android.support.design.widget.TextInputLayout
android:id="@+id/ti_new_pass"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_gravity="center"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/et_new_pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Kata Sandi Baru"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:paddingBottom="25dp"
android:paddingStart="30dp"
android:singleLine="true"
android:textColor="@color/dc_gray"
android:textSize="16sp"/>
</android.support.design.widget.TextInputLayout>
答案 0 :(得分:2)
以上使用的方法已被弃用,因此不再使用,为此,我们必须使用新的方法
passwordTxtInputLayout = findViewById(R.id.text_input_layout_password);
etPassword = findViewById(R.id.login_password);
if (etPassword != null) {
etPassword.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
passwordTxtInputLayout.setEndIconVisible(true);
}
@Override
public void afterTextChanged(Editable s) {
}
});
并在密码长度小于等于零时调用此函数
passwordTxtInputLayout.setEndIconVisible(false);
确保在调用setError之前应先调用此函数,否则eyeIcon将被禁用。
答案 1 :(得分:1)
这是我得到试验错误后的结论,我正在检查错误,如果onClick操作中的字段为空
if (etPassNow.length() == 0)
etPassNow.setError("Please fill data");
并且对于passwordToggle我在onTextChange中激活它
etPassNow.addTextChangeListener(this);
public void onTextChanged(CharSequence s, int start, int before, int count){
if (etPassNow.getText().toString().length() > 0)
textInputLayout.setPasswordVisibilityToggleEnabled(true);
else
textInputLayout.setPasswordVisibilityToggleEnabled(false);
}
这是我案例的最简单方法
答案 2 :(得分:0)
试试这个
if (etPassNow.length() == 0) {
etPassNow.setError("No data");
etPassNow.setTransformationMethod(null);
} else {
etPassword.setTransformationMethod(new PasswordTransformationMethod());
}
&#13;