簡體   English   中英

如何在SearchView和EditText上永久隱藏軟鍵盤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM