我想更改键盘输入,
示例:
当用户按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;
}
});
答案 0 :(得分:3)
使用TextWatcher
,但请巧妙使用它。当您致电setText
创建boolean flag == true
时,每次flag
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) {
}
}
答案 1 :(得分:0)
是的,我可以使用sling键盘(你可以在Google Play上找到这款应用)。你可以在手机的键盘设置下选择它作为默认设置。
RGDS,
安巴尔