隐藏软键盘方法
??有的時候,我們會接受到一些莫名的需求,比如說自己定制鍵盤, 計算器等等. 如果我們用EditText的話, 系統會默認彈出軟鍵盤,為了需求需要。 我們需要想盡各種辦法 來把系統的軟件盤給隱藏掉.
? ??現在網上有很多隱藏軟鍵盤的方法,如下所示:
? ?1, 如果軟鍵盤正在顯示,那么調用以下代碼就會隱藏, ?反之一樣.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS)2.強制隱藏軟鍵盤.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
3.默認不顯示軟鍵盤, 在Activity節點下配置. Android:windowSoftInputMode="adjustUnspecified|stateHidden"
以上幾種方法其實都不是理想狀態, ?只要你在點擊一下EditText, 軟鍵盤還是會彈出來, ?下面我會說兩種理想狀態的實現方式.
? 1. 設置 ??editText.setInputType(InputType.TYPE_NULL); ? 設置后則不會彈出軟鍵盤, 不過唯一不足的是 沒有了光標. 只能從前到后依次輸入.
? 2. ?用該方法的前提 是版本必須要 ?>3.0 也就是 sdk 10以上. 否則 就只能使用上面的 TYPE_NULL了, ?下面貼代碼。
public class NoSoftKbEditText extends EditText {public NoSoftKbEditText(Context context) {super(context);init();}public NoSoftKbEditText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}public NoSoftKbEditText(Context context, AttributeSet attrs) {super(context, attrs);init();}private void init() {if (android.os.Build.VERSION.SDK_INT > 10) { // 3.0及其以上Class<EditText> clazz = EditText.class;Method setShowSoftInputOnFocus = null;try { //利用反射獲取系統setShowSoftInputOnFocus方法setShowSoftInputOnFocus = clazz.getMethod("setShowSoftInputOnFocus", boolean.class);} catch (Exception e) {try { //出現異常再次獲取.setShowSoftInputOnFocus = clazz.getMethod("setSoftInputShownOnFocus", boolean.class);} catch (NoSuchMethodException ex) {}}if (setShowSoftInputOnFocus != null) {setShowSoftInputOnFocus.setAccessible(false);try {setShowSoftInputOnFocus.invoke(this, false); //反射調用該方法 并設置第二參數為false.} catch (Exception e) {this.setInputType(InputType.TYPE_NULL); //出現異常則 設置成沒有光標的狀態}} else { // 沒有獲取到方法 則設置成無光標狀態.this.setInputType(InputType.TYPE_NULL);}} else {// 3.0以下this.setInputType(InputType.TYPE_NULL);}}}? 接下來你只需要把它當成自定義控件一樣使用就可以了, ?完美解決了不彈出軟鍵盤問題.
? 這里就不貼下載地址了. 用的話 復制代碼即可。
? ? ?
? ? 源碼地址:傳送門,?傳送門1
? ??
總結
- 上一篇: 十四.ARM裸机学习之iNand详解
- 下一篇: 有关于投资最优化的模型求解