我有一个文本,例如“这是一个问题”,必须通过一些线索来猜测。在应用程序中,用户将在 EditText 中看到“_ _ _ _ _ _ _ _ _ _ _ _ _ ”,我需要的是,当用户在该 EditText 中输入内容时,每个“ ”都会自动替换,并按顺序从左到右。所以它会像“T hisisaqu _ _ _ _ _ _”
由于我在这个世界上很新,我不确定我是否必须向 EditText 添加一个监听器,它可以用任何需要的东西或其他东西替换用户输入。
任何回应将不胜感激
谢谢。
我有一个文本,例如“这是一个问题”,必须通过一些线索来猜测。在应用程序中,用户将在 EditText 中看到“_ _ _ _ _ _ _ _ _ _ _ _ _ ”,我需要的是,当用户在该 EditText 中输入内容时,每个“ ”都会自动替换,并按顺序从左到右。所以它会像“T hisisaqu _ _ _ _ _ _”
由于我在这个世界上很新,我不确定我是否必须向 EditText 添加一个监听器,它可以用任何需要的东西或其他东西替换用户输入。
任何回应将不胜感激
谢谢。
每当键入一个键时使用此方法:
public static int getIndex(String input) {
return input.replaceAll("_", "").length();
}
public static String prepareOutput(String actual, String input) {
input = input.replaceAll("_", "");
int diff = actual.length() - input.length();
if (diff < 0) {
return input;
}
for (int i = 0; i < diff; i++) {
input += "_";
}
return input;
}
像这样:
final EditText ed = (EditText) findViewById(R.id.editText1);
ed.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
String input = s.toString();
String output = prepareOutput("This is a question", input);
if (output.compareTo(input) != 0) {
ed.setText(output);
ed.setSelection(getIndex(output));
}
}
});