当我们在Android提供的EditText中单击的时候,会自动的弹出软键盘,其实对于软键盘的调用我们可以通过InputMethodManager这个类来实现。软键盘的调用方式就是两种:一个是像EditText那样当发生onClick事件的时候出现软键盘,还有就是当打开某个程序的时候自动的弹出软键盘。
Android软键盘的一些控制可以通过setOnEditorActionListener这个方法来实现。在EditText输入后,不点击Button进行请求,而是直接点击软键盘上的”回车”,那么也应该能够正常响应请求
public class OrderApproveSearchActivity extends BaseActivity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order_approve_search_list);
private EditText searchEdit;
searchEdit = (EditText)findViewById(R.id.search_edit);
//requestFocus:获取焦点
searchEdit.requestFocus();
//setOnEditorActionListener这个方法,在我们编辑完之后点击软键盘上的回车键才会触发
searchEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
//输入法Enter键图标的设置:actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND
if (actionId == EditorInfo.IME_ACTION_SEND
|| (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
{
//频繁点击软键盘“搜索”键不响应
if(lastSearchTime != null){
long temp = System.currentTimeMillis() - lastSearchTime;
if(temp < 1000){
return true;
}
}
lastSearchTime = System.currentTimeMillis();
//业务逻辑
if(StringUtil.isEmpty(keywords)){
Toast.makeText(OrderApproveSearchActivity.this, "请输入关键字搜索", Toast.LENGTH_SHORT).show();
}else{
refresh(null);
}
return true;
}
return false;
}
});
}
@Override
protected void onResume() {
super.onResume();
searchEdit.setFocusable(true);
searchEdit.setFocusableInTouchMode(true);
searchEdit.requestFocus();
/**
* 用一个定时器控制当打开这个Activity的时候就出现软键盘
*/
Timer timer = new Timer();
//延迟0.2s执行显示软键盘,原因是Android程序未将屏幕绘制完成
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
InputMethodManager inputManager = (InputMethodManager) searchEdit.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(searchEdit, 0);
}
}, 200);
}
/**
* 当单击事件的时候触发显示软键盘
*/
@Override
public void onClick(View v) {
InputMethodManager inputManager = (InputMethodManager) searchEdit.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(searchEdit, 0);
}
}
参考:
Android软键盘学习InputMethodManager
Android EditText的设置
Android软键盘的一些控制