gpt4 book ai didi

android - 改变某部分字符串的edittext的输入类型

转载 作者:行者123 更新时间:2023-11-30 00:14:52 26 4
gpt4 key购买 nike

我有一个输入字段,我希望它像密码一样接受输入,直到字符串长度为 8,之后输入类型应该更改为文本,这意味着如果输入字段有 12 个字符,开始 8 个字符应该是星号和其他4应该是文字。我现在使用的方法改变了整个编辑文本的类型,但我不希望这样。

etEmail.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
email = etEmail.getText().toString();

}

@Override
public void afterTextChanged(Editable editable) {
email = etEmail.getText().toString();
if(email.length() > 8){
etEmail.setTransformationMethod(null);
etEmail.setSelection(etEmail.length());

}

}
});

如果这是字符串:123456789012输入字段应显示如下:********9012

最佳答案

在单个 EditText 中不可能同时显示可见密码和密码。

如果您想更改整个编辑文本(可见密码或密码),请使用基于字符数(达到 8 时)的 TextWatcher onTextChanged 方法进行更改。

注意:editText 可能是 password 或 Visible。不能将这两个属性组合在一个 EditText 中。但是我们可以使用自定义方式来区分 8 以上的字符

editText.addTextChangedListener(textWatcher);


private final TextWatcher textWatcher= new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

public void onTextChanged(CharSequence s, int start, int before, int count) {
// if(s.length()==8)
// setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

//or replace some text above char 8
if(s.length()>=8)
{
s = s.replace(s.substring(8,s.length()), "replace some special character");
editText.setText(s);
}


}

public void afterTextChanged(Editable s) {
}
};

关于android - 改变某部分字符串的edittext的输入类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449413/

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