可以通过使用InputFilter来限制EditText只允许输入字母。下面是一个示例代码:
import android.text.InputFilter;
import android.text.Spanned;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
editText.setFilters(new InputFilter[] { new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isLetter(source.charAt(i))) {
return "";
}
}
return null;
}
}});
}
}
在这个示例中,我们通过调用editText.setFilters()
方法来设置InputFilter。InputFilter接口有一个filter()
方法,我们在这个方法中对输入的字符进行检查,如果不是字母,则返回空字符串,即不允许输入该字符。如果是字母,则返回null,即允许输入该字符。
需要注意的是,该代码只能限制用户在EditText中输入非字母字符,但无法阻止用户通过粘贴等方式输入非字母字符。如果需要完全限制用户输入非字母字符,可以考虑使用TextWatcher来监听输入变化并进行相应的处理。