将横幅广告放在 parent 的底部,片段 Android

Placing banner ad on bottom of parent with fragments Android

我正在制作一个 android 应用程序,但在定位横幅时遇到问题。

我有一个 Activity 作为片段的容器。我基本上想要根的滚动视图,然后是片段,最后是最底部的广告。

这是我的XML。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"></LinearLayout>

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ads:layout_constraintBottom_toBottomOf="parent"
            ads:layout_constraintStart_toStartOf="parent"
            ads:layout_constraintEnd_toEndOf="parent"
            ads:layout_constraintTop_toBottomOf="@id/fragment_container"
            ads:adSize="BANNER"
            ads:adUnitId="ca-app-pub-xxxx"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

布局如下

基本上,广告直接放置在片段容器下方,而不是附加到视口底部。

我希望它附加到底部,然后让滚动视图将片段 + 广告一起滚动。

这是让广告出现在底部的唯一方法(简而言之):

<Constraint layout>
       <Scroll View>
          <Fragment container>
<Ad constraining to parent bottom>

但是,使用这种方法,滚动视图只会滚动片段而不包含广告,这意味着您有时会看到广告与片段内容重叠。

所以我认为滚动视图必须是根视图。但是,我无法管理 child 使广告显示在滚动视图的底部,而不是 children 的底部边缘。

 <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            ads:layout_constraintTop_toTopOf="parent"
            ads:layout_constraintStart_toStartOf="parent"
            ads:layout_constraintEnd_toEndOf="parent"
            ads:layout_constraintBottom_toTopOf="@id/adView2">

            <LinearLayout
                android:id="@+id/fragment_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" />


        </ScrollView>

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ads:adSize="BANNER"
            ads:adUnitId="ca-app-pub-xxxx"
            ads:layout_constraintBottom_toBottomOf="parent"
            ads:layout_constraintEnd_toEndOf="parent"
            ads:layout_constraintStart_toStartOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>

使用以下代码更改您的xml

<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:fillViewport="true"
        android:layout_weight="1">

        <androidx.appcompat.widget.LinearLayoutCompat
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" />

    </ScrollView>

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-xxxx" />

</androidx.appcompat.widget.LinearLayoutCompat>

请看下图 和你想要的一样

希望对您有所帮助!

谢谢。

尼斯问候!你能用 RelativeLayout 试试吗 ;)

<?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:ads="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <LinearLayout
                    android:id="@+id/fragment_container"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" />


        </ScrollView>

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ads:adSize="BANNER"
            ads:adUnitId="ca-app-pub-xxxx"
            android:layout_alignParentBottom="true"/> <!--just add this line-->

    </RelativeLayout>

您可以使用相对布局这样做:

<?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:ads="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <LinearLayout
                    android:id="@+id/fragment_container"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" />


        </ScrollView>

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ads:adSize="BANNER"
            ads:adUnitId="ca-app-pub-xxxx"
            android:layout_alignParentBottom="true"/> <!--just add this line-->

    </RelativeLayout>