中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發 - 解決DialogFragment在全屏時View被狀態欄遮住的問題

發布時間:2020-06-17 01:11:41 來源:網絡 閱讀:1353 作者:羅伊德666 欄目:移動開發

我的上一篇文章:設置DialogFragment全屏顯示 可以設置對話框的內容全屏顯示,但是存在在某些機型上頂部的View被狀態欄遮住的問題。經過測試,發現了一種解決辦法,在DialogFragment的onCreateView()中添加一個布局監聽器:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ...
    //此處rootView是對話框的頂層View
    rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int[] location = new int[2];
            rootView.getLocationOnScreen(location);
            int y = location[1];
            if (y == 0) {
                //此處的topMarginView是被狀態欄覆蓋的View
                ViewGroup.MarginLayoutParams params
                        = (ViewGroup.MarginLayoutParams)topMarginView.getLayoutParams();
                params.topMargin += BarUtils.getStatusBarHeight();
                topMarginView.setLayoutParams(params);
                rootView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        }
    });
}

這種方法是通過監聽對話框內容布局頂層View在屏幕中的位置來解決的,如果頂層View在屏幕中的y位置為0,則表示其已經被狀態欄所遮住,然后將被遮住的View向下移動狀態欄的高度即可。

這種方式顯然不夠優雅,如果讀者能有更好的方法,歡迎留言。

本文地址,如有更多疑問,請參考我的其它Android相關博客:我的博客地址

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮安市| 介休市| 武夷山市| 诸暨市| 米脂县| 萨嘎县| 聊城市| 阿巴嘎旗| 竹山县| 土默特右旗| 内黄县| 南昌县| 喀什市| 青河县| 卫辉市| 景洪市| 安陆市| 万州区| 娱乐| 临湘市| 乐业县| 新巴尔虎左旗| 辉南县| 娱乐| 无棣县| 乳源| 密云县| 揭东县| 潮安县| 博湖县| 财经| 克东县| 昔阳县| 平阳县| 林芝县| 隆尧县| 阳西县| 广汉市| 昌邑市| 宁强县| 社旗县|