android - 在 EditText 上实现自动填充

标签 android android-edittext listener

我有一个 EditText 字段,我想在其中引入某种自动填充功能。如果按下“S”按钮,我目前要做的就是用“Special CT”填充 EditText 框。这是我的:

ctEditText = (EditText) findViewById( 1001 );
    ctEditText.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            Log.i( "KEY", "PRESSED" );
            // if keydown and "enter" is pressed
            if ((event.getAction() == KeyEvent.ACTION_DOWN)
                && (keyCode == KeyEvent.KEYCODE_ENTER)) {

                return true;

            } else if ((event.getAction() == KeyEvent.ACTION_DOWN)
                && (keyCode == KeyEvent.KEYCODE_S)) {
                Log.i( "KEY", "S" );
                if( ctEditText.getText().toString().length() == 1 ) {
                    ctEditText.setText( "Special CT" );
                }
                return true;
            }

            return false;
        }
     });

使用此代码,按“S”按钮对我来说完全没有任何作用。在我按下键盘右下角的回车按钮之前,我的 LogCat 不会显示我的任何一个 LogCalls。当我按下 enter 按钮时,它会显示两次 KEY PRESSED 日志调用,无论我在 enter 按钮之前按下了多少个不同的键。

编辑

所以在仔细研究之后,我意识到 Log 调用出现两次的原因是因为它在我释放回车键时也出现了。我还获得了调用 KEY PRESSED 日志调用的 S 键,但它在我的 If 语句 中仍然无法识别。

最佳答案

试试这个:

ctEditText = (EditText) findViewById( 1001 );
ctEditText.setOnKeyListener(new OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        Log.i( "KEY", "PRESSED" );
        // if keydown and "enter" is pressed
        if (ctEditText.getText().toString().equalsIgnoreCase("S")) {
            Log.i( "KEY", "S" );               
            ctEditText.setText( "Special CT" );               
            return true;
        }
        else if ((event.getAction() == KeyEvent.ACTION_DOWN)
            && (keyCode == KeyEvent.KEYCODE_ENTER)) {

            return true;

        } 

        return false;
    }
 });

只需检查输入的文本是否等于“S”

if (ctEditText.getText().toString().equalsIgnoreCase("S"))

更好的是,您可以使用 TextWatcher example

关于android - 在 EditText 上实现自动填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716774/

相关文章:

android - 如何在 Android 中使用 Material Design 在 EditText 和 TextView 中应用 shapeAppreanace

Python Tkinter 列表框 : fire off a function on change?

android - 将滚动条分配给具有两个子布局的布局

android - 强制使用相同的证书来签署为特定 "buildTypes"配置的不同 "productFlavor"?

java - 什么时候使用GSON解析对象?

Android 编辑文本 : How to avoid user enter smileys?

android - TextInputlayout 在设置错误时将 edittext 变为红色

导入新 gradle 项目时出现 Android Manifest 错误

php - Symfony 事件订阅者对调度没有反应

android - 点击 ImageView 获取 X 和 Y 坐标