Android監(jiān)聽鍵盤顯示和隱藏
創(chuàng)新互聯(lián)公司專注于永定企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站制作。永定網(wǎng)站建設(shè)公司,為永定等地區(qū)提供建站服務(wù)。全流程定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
問題概況:橫板cocos2dx游戲,點擊輸入框彈出鍵盤時,界面要求跟隨網(wǎng)上平易,不能擋住輸入框。這種問題只出現(xiàn)在非全屏鍵盤到情況下。
方案1:mainActivity重寫onconfigurationChanged,監(jiān)聽屏幕方向旋轉(zhuǎn),添加Android:configChanges="orientation|keyboard"。
缺點全屏下無效,如果設(shè)置為非全屏,
這樣會顯示系統(tǒng)狀態(tài)欄。否掉!
方案2:彈出鍵盤時勢必引起layout布局的變化,監(jiān)聽布局的變化然后計算偏移,即可算出是否時顯示或隱藏鍵盤。
//獲取rootview mRoot =this.getWindow().getDecorView();
全局鍵盤顯示和隱藏不會觸發(fā)
//添加布局變化監(jiān)聽 root.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); root.getWindowVisibleDisplayFrame(rect); int rootInvisibleHeight =root.getRootView().getHeight() - rect.bottom; if (rootInvisibleHeight<= 100) { //通知c++做想做的事 hideKeyBoardHandler(); } else { showKeyBoardHandler(); } } });
以上!另外對APP進行在線全方位的安全性、兼容性測試,我都會用這個:www.ineice.com。