Android 鍵盤頂起最終完美解決方法

以登錄頁面為例:

device~1.gif

1.在布局底部放置一個透明的 view_Bottom,通過監聽鍵盤彈出修改 view_Bottom的高度實現,鍵盤彈出頂起,鍵盤消失收回 的效果

    <View
        android:id="@+id/view_Bottom"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="200dp">
    </View>
  1. 獲取根布局和底部View
    View  rootView;
    View view_Bottom;
    view_Bottom = findViewById(R.id.view_Bottom);
    rootView=findViewById(R.id.root_View);
  1. 監聽根布局Layout的布局變化,鍵盤彈出修改view_Bottom的高度,收起也修改view_Bottom的高度

 //完美解決鍵盤頂起問題
        rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect r = new Rect();
                rootView.getWindowVisibleDisplayFrame(r);
                int screenHeight = rootView.getRootView().getHeight();
                int heightDifference = screenHeight - (r.bottom - r.top);
                if(heightDifference>150) params.height=900;
                else params.height=600;
                view_Bottom.setLayoutParams(params);
               // Log.e("Keyboard Size, Size: " ,String.valueOf(heightDifference));
            }
        });

4.想要不再界面一出現就彈出鍵盤,完善用戶體驗,只要在根布局里加入,就能完美解決

    android:focusable="true"
    android:focusableInTouchMode="true"

Demo連接

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,581評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,257評論 4 61
  • 內容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,907評論 22 665
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,554評論 0 17
  • 2017.4.14 1.五點半起床 2.背了七個英語單詞 3.讀了十頁邊城 4.練了192個字 5.跑了1400米...
    Fhwak閱讀 245評論 1 1