我有一个DialogFragment
包含一个Gridview
. 将其显示为对话框按预期工作。现在,我尝试将其嵌入到一个DialogFragment
中,Activity
为此,我ViewStub
在我的Activity
布局中定义如下:
<RelativeLayout>
<!-- Other children -->
<ViewStub
android:id="@+id/view_stub"
android:layout_below="@id/tv_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inflatedId="@+id/attachment"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
请注意,我没有在这里指定膨胀的布局。根据开始时的Intent
附加Activity
内容,它可以将几个布局之一膨胀到这个存根中,其中一个是DialogFragment
:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
在检查了适当的Intent
附加功能后,我扩充了上面的布局并添加DialogFragment
了以下代码:
viewStub.setLayoutResource( R.layout.dialog_fragment_placeholder );
flPlaceHolder = ( FrameLayout ) viewStub.inflate();
getSupportFragmentManager().beginTransaction()
.add( flPlaceHolder.getId(),
DialogFragment.newInstance( //arguments ),
DialogFragment.TAG )
.commit();
这导致DialogFragment
被添加,但GridView
仅显示第一行并且不可滚动。如果需要,这里是布局DialogFragment
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="100dp"
android:numColumns="auto_fit"
android:gravity="center"
android:background="#cc000000"
android:listSelector="@android:color/transparent">
</GridView>
我很确定问题是因为其中一个布局中的layout_height
/layout_width
属性不正确,但我尝试在所有可能的文件中乱搞所有可能的值,但没有任何好的结果。有什么帮助吗?