4

我有一个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属性不正确,但我尝试在所有可能的文件中乱搞所有可能的值,但没有任何好的结果。有什么帮助吗?

4

0 回答 0