日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

隐藏软键盘方法

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 隐藏软键盘方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??有的時候,我們會接受到一些莫名的需求,比如說自己定制鍵盤, 計算器等等. 如果我們用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

? ??

總結

以上是生活随笔為你收集整理的隐藏软键盘方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。