您好,登錄后才能下訂單哦!
我的上一篇文章:設置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相關博客:我的博客地址
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。