解決軟鍵盤彈出遮擋button

在一般登錄界面,軟鍵盤彈出時(shí)會(huì)遮擋登錄按鈕,網(wǎng)上的解決方法一般都是設(shè)置WindowSoftInputMode和scrollview嵌套,但無(wú)法達(dá)到我想要的效果。

下面這種方法能夠解決:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        init();
        addLayoutListener(rootView, bottomView);
    }
    /**
     * @param rootView 根布局
     * @param bottomView 需要顯示的最下方View,
     */
    public void addLayoutListener(View rootView, View bottomView) {
        rootView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
            Rect rect = new Rect();
            rootView.getWindowVisibleDisplayFrame(rect);//獲取rootView的可視區(qū)域
            int invisibleHeight = rootView.getRootView().getHeight() - rect.bottom;//獲取rootView的不可視區(qū)域高度
            if (invisibleHeight > 150) { //鍵盤顯示 
                int[] location = new int[2];
                bottomView.getLocationInWindow(location); //獲取bottomView的坐標(biāo)
                int scrollHeight = (location[1] + bottomView.getHeight()) - rect.bottom;//算出需要滾動(dòng)的高度
                if (scrollHeight != 0) {//防止界面元素改變調(diào)用監(jiān)聽(tīng),使界面上下跳動(dòng),如驗(yàn)證碼倒計(jì)時(shí)
                    rootView.scrollTo(0, scrollHeight);
                }
            } else {
                rootView.scrollTo(0, 0);
            }
        });
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者簡(jiǎn)介 創(chuàng)微信公眾號(hào)郭霖 WeChat ID: guolin_blog 瀟瀟鳳兒的博客地址: http://b...
    木木00閱讀 10,963評(píng)論 1 43
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,769評(píng)論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,055評(píng)論 4 61
  • 第九章——第十章 莫琳幾乎被哈羅德氣瘋了,她把自己囚禁在房子里,生怕被別人發(fā)現(xiàn)她的謊言,和哈羅德離他而去的不堪...
    周lynn閱讀 161評(píng)論 0 0
  • 1.本表行提供如下品牌腕表代購(gòu)。由低到高分別為: 親民檔:天梭,美度,漢密爾頓。 2.高端表 浪琴,康...
    一禾一閱讀 544評(píng)論 0 0

友情鏈接更多精彩內(nèi)容