2016-03-17 146 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。