我的xml文件中有EditText
这样的内容:
<EditText
android:id="@+id/InputPass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginBottom="20dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:drawableLeft="@drawable/ic_lock"
android:gravity="right"
android:hint="رمز عبور"
android:singleLine="true"
android:textSize="18sp" />
出于某种原因,我想在用户输入第一个字符后更改其inputType。我这样试试:
Pass.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
if(start == 0){
Pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
但它不起作用! 那里有人知道任何解决方案吗?
答案 0 :(得分:1)
更改:
Pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
致:
Pass.setTransformationMethod(PasswordTransformationMethod.getInstance());
答案 1 :(得分:0)
在
内afterTextChanged
方法,尝试以下内容:
@Override
public void afterTextChanged(Editable s) {
System.out.println("Editable: "+s);
if(s.getText().toString().length ==1)
Pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}
答案 2 :(得分:0)
我通过这个获得了最好的结果:
Pass.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
Pass.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});