1. 程式人生 > >Android在Fragment中監聽軟鍵盤的彈出和關閉

Android在Fragment中監聽軟鍵盤的彈出和關閉

原理是通過根佈局與當前佈局高度差來判斷的,Fragment實現ViewTreeObserver.OnGlobalLayoutListener這個介面。

    @Override
public void onGlobalLayout() {
        //比較根佈局與當前佈局的大小
        int heightDiff = mRegisterScroll.getRootView().getHeight()- mRegisterScroll.getHeight();
        if(heightDiff >100){
            //大小超過100時,一般為顯示虛擬鍵盤事件
new Handler().postDelayed(new Runnable() { @Override public void run() { //將ScrollView滾動到底 mRegisterScroll.fullScroll(View.FOCUS_DOWN); } }, 100); }else{ //大小小於100時,為不顯示虛擬鍵盤或虛擬鍵盤隱藏 } }

onViewCreated中新增,mRootView為當前Fragment的根佈局

mRootView.getViewTreeObserver().addOnGlobalLayoutListener(this);

必須要在銷燬的時候remove掉,否則會空指標錯誤

@Override
public void onDestroyView() {
        mRegisterScroll.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        super.onDestroyView();
    }

相關推薦

Android聊天介面鍵盤聊天記錄跟著頂上去

專案中做了個聊天介面,就一個介面懶得扒框架,順手擼了。 最後被提了個Bug,彈出輸入法鍵盤擋住了一部分聊天記錄,如下 看了微信就不會這樣,尋思是不是改改佈局就可以。 結果,一直以為是動態改變recyclerview的高度,配合佈局,把recyclerview頂上去。 各種

Android在Fragment鍵盤關閉

原理是通過根佈局與當前佈局高度差來判斷的,Fragment實現ViewTreeObserver.OnGlobalLayoutListener這個介面。 @Override public void onGlobalLayout() {

android鍵盤與隱藏,並獲取鍵盤的高度

最近專案中有一個需求上彈出軟鍵盤的時候,輸入框位移至輸入框上方,但是Activity中其他的VIew都不動。這個需求需要監聽軟軟鍵盤的彈出與隱藏,並獲取鍵盤的高度。上網找了一下發現,Android竟然沒有提供相應的介面。網上找到的替代方法中最常用的就是自定義根試圖從寫on

關於ListViewEditText在鍵盤後的焦點問題

在ListView中,每次彈出軟鍵盤後就會重新呼叫getView()方法,導致EditText失去焦點。 解決辦法:在getView()方法中新增監聽器: editText.setOnTouchListener(new OnTouchListener() {            @Override  

android 真正鍵盤得彈起

 在開發中我們有時需要監聽鍵盤得變化情況  Softkeyboardlistener.class 工具類   public class Softkeyboardlistener { private View rootView;//activity的根

iOS-關於鍵盤關閉

在iOS模擬器上,打印出不同手機型號鍵盤彈出的寬高: iPhone4s,width:320 height:253; iPhone5/5s:width:320 height:253; iPhone6/6s:width:375 height:258; iPhone6 Plus/

Android開發之鍵盤狀態(收回)

概述 如何使用 隱患 概述 在我們開發過程中,有時需要監聽手機軟鍵盤狀態,但是Android沒有這樣的API,所以需要我們自己處理。 實現方案 實現效果與原理 先上一張效果圖 可以看到我們準確的監聽到了軟鍵盤的彈出與收起事

如何鍵盤、隱藏(親測可用)

看了N多文章,終於找到了答案 第一步 注意:必須設定 android:windowSoftInputMode="adjustResize" 原理 注意下面的activityRootView對應的R.id.activityR

ScrollView鍵盤依然遮住控制元件

在一個Activity頁面中,常會有需要使用者輸入的文字控制元件EditText,EditText獲取焦點後,彈出的軟鍵盤往往會遮擋底部的其他控制元件,通常處理方法是: 1、xml佈局中,使用ScrollView包含使用者控制元件; 2、Manifest檔案

android開發dialog的同時將鍵盤

宣告:此部落格為本人平時開發遇到的一些問題的整理彙總 當我們在dialog裡面添加了EditText控制元件,又需要在dialog彈出來的時候同時彈出軟鍵盤時,就需要使用Handler來實現: H

Android安卓WebApp 全屏普通模式下 webview鍵盤擋住輸入框 解決方案

最近公司開發的WEBAPP遇到了一個比較噁心的問題。就是在webview中當需要輸入內容時,軟鍵盤彈起後,擋住了輸入框,試了很多辦法都不太滿意。(這裡要吐槽下,人家IOS端,蘋果系統都給直接封裝好了,

安卓移動端鍵盤問題解決方案

log logs 情況 sel clas scrollto refs ext 題解 移動端開發難免拿到輸入框居中或者位於底部的情況,ios 端,軟鍵盤能夠按正常預期向上滑動(這裏有個問題,當 input 聚焦時,彈出軟鍵盤,input 上滑,此時屏幕是具有滾動效果的,還沒找

解決 安卓手機 鍵盤 布局的問題

bsp doc html document 軟鍵盤 cti nbsp lur script 一、 js <script type="text/javascript">$(‘body,html‘).height(document.body.clientHeig

解決安卓手機上鍵盤擠壓背景的問題

彈出 鍵盤 color col 軟鍵盤 func class div res demo: // 解決本頁面軟鍵盤彈窗背景擠壓的問題 var clientHeight = document.documentElement.clientHeight || documen

Android鍵盤,覆蓋h5頁面輸入框問題

問題 過多 繼承 col 鍵盤 代碼 chrom 技術 fff 之前我們在使用vue進行 h5 表單錄入的過程中,遇到了Android軟鍵盤彈出,覆蓋 h5頁面 輸入框 問題,在此進行回顧並分享給大家: 系統:Android 條件:當輸入框在可視區底部或者偏下的位置 觸發

KeyboardUtil【鍵盤後輸入框上移一定的高度】

together true 添加 存儲 oge 底部 putty 如果 original 版權聲明:本文為HaiyuKing原創文章,轉載請註明出處! 前言 演示獲取軟鍵盤高度並保存,然後根據輸入框的原有位置是否被軟鍵盤擋住了,如果被擋住了則將整體頁面上移一定的高度,當

周記3——解決fixed屬性在ios鍵盤後失效的bug

images fff 發現 apple load http none orien 兩種方法   這周在做空間(“類似”qq空間)項目。首頁是好友發表的說說,可以針對每條說說進行評論,評論框吸附固定在屏幕底部。此時,Bug來了...在ios上,軟鍵盤彈出後fixed屬性失效了

Android EditText鍵盤實現頁面標題頭不動,鍵盤在編輯框下面

為了實現EditText編輯的時候彈出軟鍵盤標題頭不動,底部編輯框上移,想了好多種方法,也百度,問同事每種辦法都有問題,在這總結一下,希望能幫助到大家。 上圖看下效果: 可以看到彈出鍵盤的時候,只有EditText在軟鍵盤上面,還有一個藍色點,這個隨後再說。 用Relative

移動端web頁面底部固定元素(鍵盤)解決方案

底部固定的輸入框,如圖: 解決方案如下 <div> <Header/> // absolute, top:0 <Footer/> // absolute, bottom:0 <Content/> // absolute

Android實時鍵盤顯示或隱藏

搞了一個實時監聽軟鍵盤顯示或隱藏,當軟鍵盤隱藏了,做邏輯;軟鍵盤顯示出來了,做邏輯; 直接上程式碼了,下面是我寫的工具類,名字為 SoftKeyBoardListener : import android.app.Activity; import android.graphics.