2016-03-17 118 views
0

我遇到問題,其中的對話框在內容對於屏幕太大時不滾動。我認爲這是因爲Dialogs不顯示在Scrollable容器中。使DialogFragment窗口可滾動

enter image description here

截圖包含包裹在一個滾動型內容 - 你只能看到內容是滾動

額外的字段添加到人爲地增加對話框的大小在這個例子中

你可以請參閱Android Developer Documentation Dialogs應該包裝在DialogFragments中(這可以讓您的對話框在方向更改中生存下來並重新獲得響應對生命週期事件),這是我試圖讓工作的設置。

我發現的許多其他答案都是相似的,並圍繞確保窗口設置爲「adjustResize」。但是,這隻會使鍵盤打開時的父視圖更小,如果它不在Scrollable容器中,則不會使View可滾動。

如果有人能讓我知道他們是否有信息讓對話框滾動或確認你不能製作對話框滾動我會很感激。

回答

0

這可能是最髒,最有可能突破的解決了這個問題:

final ViewGroup content = (ViewGroup) dialog.findViewById(android.R.id.content); 
    content.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      content.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
      View inner = content.getChildAt(0); 
      content.removeViewAt(0); 
      ScrollView scrollView = new ScrollView(getContext()); 
      scrollView.addView(inner); 
      content.addView(scrollView); 
     } 
    }); 
0

我:

onCreateDialog()創建對話框,而是返回之前,你可以通過添加該代碼實現滾動後曾與DialogFragment同樣的問題,但我改變了:

<fragment android:layout_height="425dp" 
... 

這樣:

<fragment android:layout_height="wrap_content" 
... 

現在它在鍵盤打開時或屏幕處於橫向模式時滾動。

注意:當然,我將ScrollView作爲DialogFragment佈局中的rootView。