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)
下面是让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)
相关文章推荐
- Android绑定EditText自动弹出自定义软键盘不同按键设置不同背景的实现(自动向上顶适应布局)
- [Android]搜索界面--自动弹出键盘,并点击键盘搜索进行搜索
- Android 设置EditText不会自动弹出键盘
- 工作日志记录:Android中为Editetxt设置软件盘的enter键为的显示为Search(搜索),并响应搜索行为
- EditText添加android:imeOptions="actionSearch"弹出的键盘中带有搜索按钮
- AndroidStudio设置不自动弹出 Documentation 窗口
- android spinner自动弹出列表,设置title,TtextView不换行自动截取方法
- android 搜索自动匹配关键字并设置器颜色
- 【Android开发经验】设置不自动弹出软键盘的最简洁解决方案
- 【Android】设置摄像头方向、打开线程与预览线程、设置参数、Camera外设按键、自动对焦与触摸对焦、拍照、人脸检测、位置管理、旋转管理、变焦、录像
- 关于android中EditText自动获取焦点并弹出键盘的相关设置
- Android开发之将Edittext输入弹出的软键盘设置搜索确定键。详细代码,已验证可用。
- Android Spinner自动弹出列表,设置title
- [置顶] Android开发之将Edittext输入弹出的软键盘设置搜索确定键。详细代码,已验证可用。
- android设置自动弹出软键盘
- 关于Android中EditText自动获取焦点并弹出键盘的相关设置
- Android Edittext 自动弹出虚拟键盘的问题
- android 平台设置默认home后按home键弹出默认home弹框的问题
- Android如何将第三方预装的AP安装在data/app下面,用户可以选择卸载,但是在用户恢复出厂设置后,会再次自动安装
- android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索