为什么Android视图会跳到Admob广告?

3

我是一名相对新手的安卓应用程序员,尝试在应用中实现广告。我正在像下面这样在片段中添加一个横幅广告:

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/meScrollView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center_horizontal"

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context=".MainActivity$PlaceholderFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/mePageRelLayout">

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            ads:adSize="BANNER"
            ads:adUnitId="@string/banner_ad_unit_id"
            android:layout_gravity="center"
            android:layout_centerHorizontal="true"
            android:layout_below="@+id/chart">
        </com.google.android.gms.ads.AdView>

        lots and lots of 
        <TextView
            .../>

        <TextView
            .../>

        <ImageView
            android:id="@+id/chart"
            .../>
    </RelativeLayout>
</ScrollView>

还有Java,像这样:

        AdView mAdView = (AdView) rootView.findViewById(R.id.adView2);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
每次我进入该片段,视图都开始正常。我看到了顶部的TextView和ImageView。然后,视图跳转到AdView,我已经将其放置在ScrollView的底部。我希望它不要跳到AdView。每隔几秒钟,当我滚动时就会发生这种情况。为什么会这样,我该怎么办才能解决呢?
我尝试将其放置在RelativeLayout中的其他位置,但无论放在哪里,它仍会跳转。我把它从RelativeLayout中拿出来,只放在ScrollView中,但是我会收到一个错误,说没有足够的空间来容纳广告(广告大小为320x50,可用空间为0x600,类似于此)。我尝试让Java代码成为片段中运行的第一件事,但然后它立即跳转到AdView,并在几秒钟后仍然跳转。我最好的猜测是我必须覆盖AdView中的某个类?

我不打算在这个评论之外深入讨论这个问题,但是如果ScrollView应该占据整个屏幕,你需要将它插入到ScrollView中的一个视图中,并在其上方和/或下方添加其他视图。如果ScrollView只应该部分占据屏幕,那么你需要为父布局中的视图设置高度、权重、上/下、顶部/底部或其他属性。 - CmosBattery
现在它在ScrollView内的RelativeLayout中,但一旦我将其从RelativeLayout中取出,它会说ScrollView只能托管一个直接子项。我希望它位于RelativeLayout中某些视图之间,这样您就可以在需要时滚动广告。谢谢您的帮助! - squeegene
你的问题不太清楚,请详细说明并提供更多XML数据。 - Keshav
抱歉,我会尽力澄清的。 - squeegene
在这里找到了另一个解决方法:https://dev59.com/_mkw5IYBdhLWcg3wg6yg - squeegene
2个回答

1

我认为你需要在ScrollView中添加其他内容。如果已经有其他内容,请尝试在ScrollView中的所有其他内容之前以编程方式实例化广告。如果您希望广告与ScrollView分开,请将其放在外面但在同一个片段中。


谢谢你的建议!我已经尝试了两种方法;现在它是在RelativeLayout中与其他内容一起放在ScrollView中,这样你就可以滚动到它之后。不知为何,过了一段时间后它仍然会直接跳转到广告,但我有一种感觉这与ScrollView有关。我注意到每次跳转时,logcat都会打印出以下信息:
广告不可见。不刷新广告。 计划在60000毫秒后刷新广告。
- squeegene

1
很可能当adView接收内容时,它会导致自己暂时获得焦点或以其他方式导致包含的ScrollView重新定位以显示AdView。
我强烈建议将AdView移出ScrollView,因为这将:
1.避免问题。 2.确保始终显示AdView,从而增加您的收入。

这肯定会避免问题!谢谢你的帮助。 - squeegene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接