在EditText android中更改键盘输入文本

在EditText android中更改键盘输入文本,android,android-edittext,Android,Android Edittext,我想更改键盘输入 例如: 当用户按a时,它将显示c 我尝试使用TextWatcher,但它挂起,因为调用setText后,它将再次到达TextWatcher事件。因此,它会死锁,无法工作 setOnKeyListener也不工作onKey输入时事件到达。按a或b时未到达 是否可以在EditText Android中更改文本输入键 更新:setOnKeyListener final EditText edittext = (EditText) findViewById(R.id.editText1

我想更改键盘输入

例如:

当用户按a时,它将显示c

我尝试使用
TextWatcher
,但它挂起,因为调用
setText
后,它将再次到达TextWatcher事件。因此,它会死锁,无法工作


setOnKeyListener
也不工作
onKey
输入时事件到达。按a或b时未到达

是否可以在EditText Android中更改文本输入键

更新:setOnKeyListener

final EditText edittext = (EditText) findViewById(R.id.editText1);

        edittext.setOnKeyListener(new OnKeyListener() {


            @Override
            public boolean onKey(View arg0, int keycode, KeyEvent event) {
                // TODO Auto-generated method stub
                Log.i("onKey", "Arrive Keypress");
                if (event.getAction()!=KeyEvent.ACTION_DOWN)
                    return true;

                 if (event != null&& (keycode == KeyEvent.KEYCODE_ENTER)) {

                     applySearch();
                     return true;
                 }

                return false;
            } 


        });

是的,它是可行的,我使用sling键盘(你可以在Google Play上找到这个应用程序)。你可以在手机的键盘设置下选择它作为默认值

Rgds


Ambar

使用
TextWatcher
,但要灵活使用。调用
setText
create
boolean flag==true
,并在
onTextChanged
中每次检查此
标志时。希望它能有所帮助

public class MyActivity extends Activity implements TextWatcher {

EditText et;
boolean flag;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    et=(EditText) findViewById(R.id.et);
    et.addTextChangedListener(this);

}


@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    if(flag)
    {
        flag = false;
        return;
    }
    else
    {
        //do same staff
        flag = true;
        et.setText("new text");
    }
}

@Override
public void afterTextChanged(Editable s) {

}
}

setOnKeyListener
应该可以工作。请输入您的代码。@AleksG,更新了问题。您正在显式地检查输入的keycode-当然它对其他键不起作用。这不是OP所要求的。他想通过编程随时更改输入,而不管使用的是什么键盘。