为什么我的片段底部没有显示?

Why is the bottom of my fragment not displaying?

我在 XML 中创建了以下 DialogFragment:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@id/mainLayout"
              xmlns:ads="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:paddingLeft="5dp"
              android:paddingRight="0dp"
              android:orientation="vertical" >
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@id/quoteLayout"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:paddingLeft="5dp"
                  android:paddingRight="0dp"
                  android:orientation="vertical" >
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@id/buttonLayout"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:paddingLeft="5dp"
                  android:paddingRight="0dp"
                  android:orientation="vertical" >
        <Button
            android:id="@id/getMoreButton"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/getMore"
            android:onClick="getMore" />
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@id/adLayout"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:paddingLeft="5dp"
                  android:paddingRight="0dp"
                  android:orientation="vertical" >
        <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            ads:adSize="BANNER"
            ads:adUnitId="@string/banner_ad_unit_id">
        </com.google.android.gms.ads.AdView>
    </LinearLayout>
</LinearLayout>

我一直在处理 quoteLayout 部分,并让它按我希望的方式运行。现在我想用一个按钮和一个广告填充其他部分。

问题是 mainLayout 的其他部分仍然没有显示任何内容。屏幕的结尾是quoteLayout的结尾。

有什么想法吗?

您将它的方向设置为 vertical,但在您的线性布局子项中,您将 android:layout_height 属性设置为 match_parent,它填满了布局。它应该是 wrap_content 或使用 weights 以更好地组织它的外观。至少,这对我来说是错误的。尝试将 match_parent 换成 wrap_content 或使用 weight 属性。请注意,如果您使用 weight 设置 android:layout_height' to0dp.`

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@id/mainLayout"
          xmlns:ads="http://schemas.android.com/apk/res-auto"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:paddingLeft="5dp"
          android:paddingRight="0dp"
          android:orientation="vertical" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@id/quoteLayout"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:paddingLeft="5dp"
              android:paddingRight="0dp"
              android:orientation="vertical" >
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@id/buttonLayout"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:paddingLeft="5dp"
              android:paddingRight="0dp"
              android:orientation="vertical" >
    <Button
        android:id="@id/getMoreButton"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/getMore"
        android:onClick="getMore" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@id/adLayout"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:paddingLeft="5dp"
              android:paddingRight="0dp"
              android:orientation="vertical" >
    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">
    </com.google.android.gms.ads.AdView>
</LinearLayout>

您已在另一个也匹配高度的 LinearLayout 中将报价布局设置为 match_height。您的按钮布局和 adLayout 就在屏幕底部。

为了解决这个问题,我会像这样使用布局权重:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@id/mainLayout"
              xmlns:ads="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:paddingLeft="5dp"
              android:paddingRight="0dp"
              android:orientation="vertical" >
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@id/quoteLayout"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="0.5"
                  android:paddingLeft="5dp"
                  android:paddingRight="0dp"
                  android:orientation="vertical" >
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@id/buttonLayout"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="0.3"
                  android:paddingLeft="5dp"
                  android:paddingRight="0dp"
                  android:orientation="vertical" >
        <Button
            android:id="@id/getMoreButton"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/getMore"
            android:onClick="getMore" />
    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@id/adLayout"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="0.2"
                  android:paddingLeft="5dp"
                  android:paddingRight="0dp"
                  android:orientation="vertical" >
        <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            ads:adSize="BANNER"
            ads:adUnitId="@string/banner_ad_unit_id">
        </com.google.android.gms.ads.AdView>
    </LinearLayout>
    </LinearLayout>

请注意,我已将 layout_height 更改为 0dp 并添加了一个 layout_weight 标签。此标记使您的布局将根据输入的值调整到一定比例的高度。

您也可以使用 wrap_content 作为高度。