1

我有一個全屏的DialogFragment。一切都很順利,直到我用新的Android Nougat(7)版本測試了我的應用。突然間我發現奇怪的邊距出現在屏幕的頂部和底部。Nougat 7中的DialogFragment在全屏中有奇怪的行爲

父佈局是ConstraintLayout,但即使我試圖將其更改爲LinearLayout或RelativLayout,也沒有任何事情發生。

我有這樣的代碼行:

getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); 
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
getDialog().getWindow().setLayout(getScreenWidth(), getScreenHeight()); 

,這是截圖: Screenshot

什麼想法?

+0

你好MorH,我面臨着類似的問題。你能不能讓我知道你應用了哪些修補程序來使它工作?謝謝 – Nilesh

+0

你好,對不起,我遲早會發布給大家.. – morH

回答

0

我對這個問題的解決方案是將'DialogFragment'添加爲'Fragment'而不是對話框。

我刪除:

dialog.show(fm, MyDialog.class.getSimpleName()); 

,並將此代碼來代替:

 FragmentTransaction transaction = iFm.beginTransaction(); 
     transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
     ViewGroup root = (ViewGroup) iActivity.findViewById(android.R.id.content).getRootView(); 
     FrameLayout child = new FrameLayout(iActivity); 
     child.setLayoutParams(new ViewGroup.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); 
     child.setId(R.id.dialog_container); 
     root.addView(child); 
     transaction.add(child.getId(), iDialog).addToBackStack(iDialog.getClass().getSimpleName()).commit(); 

我喜歡加入對話的所有內容上面的DialogFragment,而是用簡單的片段交易。 這是唯一的解決方法,我可以計算,它的工作很好,直到現在像魅力:)