2

I want to change keyboard input ,

Example :

When user press a , it will be show c

I tried to use TextWatcher and it hang because after calling setText , it will be arrive again TextWatcher event. So, it will deadlock and not working.

setOnKeyListener is not working also. onKey event arrive when Enter. Not arriving when I press a or b.

It is possible to change text input key in EditText Android ?

Update: 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;
            } 


        });
4

2 回答 2

3

使用TextWatcher,但要聪明地使用它。当你调用setTextcreate时,boolean flag == true每次都检查这个flagonTextChanged希望它的帮助。

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) {

}
}
于 2013-04-11T14:04:21.800 回答
0

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

Rgds,

安巴尔

于 2013-04-11T14:04:12.677 回答