第一個app-進階:1、讓EditText屏蔽軟鍵盤仍能游標閃動:2、EditText 的inputType參數類型(密碼方式-隱藏顯示、只允許輸入數字等等)

來源:互聯網
上載者:User

標籤:

EditText屏蔽軟鍵盤後,游標消失問題

開始我有個需求:屏蔽系統軟鍵盤

於是找到並使用這個方法:

//edit_text1.setInputType(InputType.TYPE_NULL); //屏蔽軟鍵盤彈出
//edit_text2.setInputType(InputType.TYPE_NULL); //屏蔽軟鍵盤彈出
//edit_text3.setInputType(InputType.TYPE_NULL); //屏蔽軟鍵盤彈出

讓三個EditText都成功地沒有軟鍵盤彈出。

後來我要在EditText上設定顯示光線標:

android:textCursorDrawable="@null"
android:cursorVisible="true"

但始終無游標閃動。。

---->然後在網上找到了這個方法---->

//屏蔽軟鍵盤彈出--游標依然能閃動        hideSoftInputMethod(edit_text1);       hideSoftInputMethod(edit_text2);       hideSoftInputMethod(edit_text3);

--真正的方法在這->

/** ==== 隱藏系統鍵盤 ======*/    //用這個方法關閉系統鍵盤就不會出現游標消失的問題了    public void hideSoftInputMethod(EditText ed){        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);        String methodName = null;        int currentVersion = android.os.Build.VERSION.SDK_INT;        if(currentVersion >= 16){            // 4.2            methodName = "setShowSoftInputOnFocus";  //        }else if(currentVersion >= 14){            // 4.0            methodName = "setSoftInputShownOnFocus";        }        if(methodName == null){            //最低級最不濟的方式,這個方式會把游標給屏蔽            ed.setInputType(InputType.TYPE_NULL);        }else{            Class<EditText> cls = EditText.class;            Method setShowSoftInputOnFocus;            try {                setShowSoftInputOnFocus = cls.getMethod(methodName, boolean.class);                setShowSoftInputOnFocus.setAccessible(true);                setShowSoftInputOnFocus.invoke(ed, false);            } catch (Exception e) {                e.printStackTrace();            }        }    }
EditText 的inputType參數類型
//edit_text2、edit_text3 輸入框只允許輸入數字 
edit_text2.setInputType(InputType.TYPE_CLASS_NUMBER);
edit_text3.setInputType(InputType.TYPE_CLASS_NUMBER);
 
Button bn = new Button(this);
bn.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    EditText edit_text1 = (EditText) findViewById(R.id.edit_text1);                    EditText edit_text2 = (EditText) findViewById(R.id.edit_text2);                    EditText edit_text3 = (EditText) findViewById(R.id.edit_text3);                    Button b = (Button) findViewById(v.getId());                    //判斷焦點(是否獲得了焦點)          ==五星好評                    //   檢查鍵入的內容(是否合格)                    //     將鍵入的內容追加給已獲得焦點的EditText                    //                    if (edit_text1.isFocused()) {                        try {                            Long.parseLong(b.getText().toString(), 16);  //檢查是否可轉化為十六進位,即檢查輸入是否是十六進位數                            edit_text1.append(b.getText());//內容追加                            edit_text1.setError(null);//清除錯誤訊息框                        } catch (Exception e) {                            edit_text1.setError("請輸入0~~F之內的十六進位數.");                        }                    }else if (edit_text2.isFocused()) {                        edit_text2.append(b.getText());                        edit_text2.setError(null);                    } else if (edit_text3.isFocused()) {                        edit_text3.append(b.getText());                        edit_text3.setError(null);                    }                }            });

 

在xml中可以這樣定義:

android:inputType參數類型說明android:inputType="none"--輸入一般字元android:inputType="text"--輸入一般字元android:inputType="textCapCharacters"--輸入一般字元android:inputType="textCapWords"--單詞首字母大小android:inputType="textCapSentences"--僅第一個字母大小android:inputType="textAutoCorrect"--前兩個自動完成android:inputType="textAutoComplete"--前兩個自動完成android:inputType="textMultiLine"--多行輸入android:inputType="textImeMultiLine"--IME多行(不一定支援)android:inputType="textNoSuggestions"--不提示android:inputType="textUri"--URI格式android:inputType="textEmailAddress"--電子郵件地址格式android:inputType="textEmailSubject"--郵件主題格式android:inputType="textShortMessage"--短訊息格式android:inputType="textLongMessage"--長訊息格式android:inputType="textPersonName"--人名格式android:inputType="textPostalAddress"--郵政格式android:inputType="textPassword"--密碼格式android:inputType="textVisiblePassword"--密碼可見格式android:inputType="textWebEditText"--作為網頁表單的文字格式設定android:inputType="textFilter"--文本篩選格式android:inputType="textPhonetic"--拼音輸入格式android:inputType="number"--數字格式android:inputType="numberSigned"--有符號數字格式android:inputType="numberDecimal"--可以帶小數點的浮點格式android:inputType="phone"--鍵盤android:inputType="datetime"android:inputType="date"--日期鍵盤android:inputType="time"--時間鍵盤

第一個app-進階:1、讓EditText屏蔽軟鍵盤仍能游標閃動:2、EditText 的inputType參數類型(密碼方式-隱藏顯示、只允許輸入數字等等)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.