国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android判斷軟鍵盤彈出并隱藏的簡單完美解決方法(推薦)

2019-12-12 04:59:58
字體:
來源:轉載
供稿:網友

最近項目中有一個編輯框,下面是個ListView。在觸發編輯框彈出軟鍵盤后,ListView還能滑動,并且ListView的item還能響應單擊。這樣的體驗效果很不好。于是便想在滑動或單擊item時判斷鍵盤是否彈出,若彈出,則把它隱藏。

網上一搜,發現Android并沒有直接提供軟鍵盤的彈出與隱藏判斷,一些解決方案諸如判斷父控件的高度或者判斷

if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) 隱藏鍵盤;

的方法并沒有用,于是便從官方文檔著手。

發現InputMethodManager有一個方法isActive(View view):如果view是輸入法的活動view,則返回true。也就是說,如果是由view觸發彈出軟鍵盤,則返回true。哇,那問題就好辦了

if(isActive(edittext))隱藏鍵盤

接著讓另一個view強制獲取焦點,這樣isActivite(ediitext)就為false.

這個方法比較簡單,代碼比較短,也很好理解,希望能夠幫助有需要的人,也不枉費我調試幾個小時的功夫。

附上代碼:

InputMethodManager inputMethodManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);<br>private boolean hideKeyboard(){    if(inputMethodManager.isActive(searchEditText)){<br>          //因為是在fragment下,所以用了getView()獲取view,也可以用findViewById()來獲取父控件      getView().requestFocus();//使其它view獲取焦點.這里因為是在fragment下,所以便用了getView(),可以指定任意其它view      inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);      return true;    }    return false;  }

ps:  如果是手動彈出鍵盤,getActivity().getCurrentFocus()改成searchEditText.并且手動彈出的鍵盤isActivie()失效,可用標記來判斷.

以上就是小編為大家帶來的Android判斷軟鍵盤彈出并隱藏的簡單完美解決方法(推薦)全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孝感市| 石嘴山市| 金塔县| 千阳县| 师宗县| 鹤峰县| 弋阳县| 娱乐| 栖霞市| 南皮县| 柘荣县| 德保县| 共和县| 渭南市| 昭平县| 阜城县| 卓尼县| 玉屏| 铜川市| 益阳市| 海原县| 双鸭山市| 阿鲁科尔沁旗| 大理市| 积石山| 广丰县| 延津县| 玛曲县| 阿克陶县| 闽侯县| 榆树市| 正镶白旗| 龙游县| 浮山县| 馆陶县| 淮阳县| 石阡县| 偃师市| 阜康市| 鄂伦春自治旗| 通辽市|