您的位置:首页 > 移动开发 > Android开发

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

2013-07-02 16:05 429 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐