【Android】EditText輸入中文時出現下劃線拼音處理

    在開發過程中,有時候會需要監聽EditText輸入內容長度做出反應的操作。但是像小米手機的輸入機制,會在輸入中文的時候出現帶下劃線的拼音,這種情況影響了EditText輸入長度監聽。

    處理方法:

/**
     * 過濾非選中輸入,比如輸入中文時,過濾掉搜索框裏已經輸入的拼音(小米手機出現的情況)
     * 返回空字符串,就代表匹配不成功,返回null代表匹配成功
     */
    InputFilter iF = new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            SpannableString ss = new SpannableString(source);
            Object[] spans = ss.getSpans(0, ss.length(), Object.class);
            if(spans != null) {
                for(Object span : spans) {
                    if(span instanceof UnderlineSpan) {
                        return "";
                    }
                }
            }
            return null;
        }
    };

自定義過濾機制,判斷是下劃線的span就不輸入。

調用:

searchEt.setFilters(new InputFilter[]{iF});

此處searchEt是EditText實例。

PS:

EditText輸入長度監聽:

/**
     * 輸入字符大於2自動搜索
     */
    private TextWatcher searchWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            //輸入文字或字符大於2時自動搜索
            if(s.length() >= 2) {
                showSearchFragment();
            }
        }
        @Override
        public void afterTextChanged(Editable s) {
        }
    };

EditText監聽軟鍵盤按鈕事件(例子爲搜索事件):

/**
     * 軟鍵盤搜索事件
     */
    private TextView.OnEditorActionListener searchActionListener = new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                hideKeyBoard(searchEt);
                showMongo(false);
                showSearchFragment();
                return true;
            }
            return false;
        }
    };

在xml中的EditText添加屬性:

android:imeOptions="actionSearch"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章