android 3.0下keyboard的自动弹出和search搜索按键的设置

来源:互联网 发布:网络彩票何时恢复 编辑:程序博客网 时间:2024/06/07 20:45

1 在android 3.0以上sdk开发中,start activity后edittext在显示中会自动弹出keyboard, 但3.0以下版本必须点一次edittext才可以弹出keyboard。

下面是让3.0以下版本自动弹出keyboard的方法:


private void showKeyBoard() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {


public void run() {
InputMethodManager inputManager = (InputMethodManager) mEditText.getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(mEditText, 0);
}


}, 800);
}


隐藏keyboard方法:

private void hideKeyBoard() {
InputMethodManager m = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
m.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}


2 让keyboard显示search或相应图标

在xml中设置 android:imeOptions="actionSearch"。

如下:

<EditText
                android:id="@+id/search_files_edittext"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="@android:color/transparent"
                android:imeOptions="actionSearch"
                android:singleLine="true"
                android:textSize="19sp" />


然后需要监听search按钮,如下:

mEditText.setOnEditorActionListener(new OnEditorActionListener() {


@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
// TODO Auto-generated method stub
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
if (mEditText.getText().length() > 0 && mSearchFolder != null) {
// hideKeyBoard();
mKeyword = new String(mEditText.getText().toString().toLowerCase());
mEditText.clearFocus();
hideKeyBoard();
mTopbarSearchContainer.setVisibility(View.GONE);
setSearchContentVisiable(true);
setTopbarVisiable(true);
setTopbarTitle();
showSearchResult(true, mKeyword);
mProgressDialog = new NoBorderProgressbar(SearchFilesActivity.this);
mProgressDialog.setCanceledOnTouchOutside(false);
mProgressDialog.setOnKeyListener(new OnKeyListener() {


@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
stopSearchQuery();
}
return true;
}
});
mProgressDialog.show();
}
}
return false;
}
});

注意:对于3.0版本一下的sdk, 上面的判断条件还不够,因actionId的值为0, 改成如下即可:

if (actionId == EditorInfo.IME_ACTION_SEARCH || event == null || event.getKeyCode() == KeyEvent.KEYCODE_ENTER)


原创粉丝点击