[英]How to permanently hide soft keyboard on searchview and edittext
我想在應用程序中永久隱藏軟鍵盤。 因此,我可以使用自定義鍵盤。 我已經檢查了許多解決方案,但仍然出現軟鍵盤。 這是我的代碼來注冊searchview。
EditText mEditText;
SearchView mSearchView;
public void registerSearchView(final SearchView sview, final MenuItem searchItem ) {
mSearchView = sview;
SearchManager searchManager = (SearchManager) mHostActivity.getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(mHostActivity.getComponentName()));
mEditText = (EditText) mSearchView.findViewById(R.id.search_src_text);
ImageView closeButton = (ImageView) mSearchView.findViewById(R.id.search_close_btn);
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mEditText.getText() == null || mEditText.getText().length() < 1) {
mSearchView.onActionViewCollapsed();
MenuItemCompat.collapseActionView(searchItem);
hideCustomKeyboard();
} else {
mEditText.setText("");
mSearchView.setQuery("", false);
}
//Collapse the search widget
}
});
mEditText.setOnTouchListener(onTouch);
mSearchView.setOnTouchListener(onTouch);
mEditText.setOnFocusChangeListener(oFocusChange);
mSearchView.setOnFocusChangeListener(oFocusChange);
mEditText.setOnClickListener(onClickListener);
mSearchView.setOnClickListener(onClickListener);
mSearchView.setOnSearchClickListener(onClickListener);
private View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
((InputMethodManager) mHostActivity.getSystemService(ActionBarActivity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);
showCustomKeyboard(v);
v.clearFocus();
v.requestFocus();
}
};
private View.OnTouchListener onTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent motionEvent) {
if (mEditText.getText()==null || mEditText.getText().length() < 1){
v.clearFocus();
v.requestFocus();
}
((InputMethodManager) mHostActivity.getSystemService(ActionBarActivity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);
v.onTouchEvent(motionEvent);
return true;
}
};
private View.OnFocusChangeListener oFocusChange = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean b) {
if (b == false) {
hideCustomKeyboard();
} else {
((InputMethodManager) mHostActivity.getSystemService(ActionBarActivity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);
showCustomKeyboard(v);
}
}
};
這將起作用,因為您可以強制android隱藏鍵盤!
public static void disableSoftInputFromAppearing(EditText editText) {
if (Build.VERSION.SDK_INT >= 11) {
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
editText.setTextIsSelectable(true);
} else {
editText.setRawInputType(InputType.TYPE_NULL);
editText.setFocusable(true);
}
}
上面的代碼將可以預見!
以及搜索視圖
mSearchView.clearFocus();
將解決問題
添加到您的清單:
<activity android:name="com.your.package.ActivityName"
android:windowSoftInputMode="stateHidden" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.