Android 没有广告时隐藏横幅空间

Android 没有广告时隐藏横幅空间,android,view,ads,Android,View,Ads,我最近从Admob SDK改为GPS库,有一件事困扰着我。 我有一个简单的视图来定义布局中的线条,以防止用户无意中点击广告。使用Admob SDK,当没有广告时,该行将下降到布局的底部,但使用GPS Lib,该视图将保持不变。 当并没有广告时,当用户在离线模式下使用应用程序时,就会有一个丑陋的空白空间。 当没有广告的时候,我怎样才能摆脱这个空间呢? 这是我的XML <RelativeLayout xmlns:android="http://schemas.android.com/apk

我最近从Admob SDK改为GPS库,有一件事困扰着我。 我有一个简单的视图来定义布局中的线条,以防止用户无意中点击广告。使用Admob SDK,当没有广告时,该行将下降到布局的底部,但使用GPS Lib,该视图将保持不变。

当并没有广告时,当用户在离线模式下使用应用程序时,就会有一个丑陋的空白空间。

当没有广告的时候,我怎样才能摆脱这个空间呢? 这是我的XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/back2" >
    <RelativeLayout
        android:id="@+id/upperBar"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:background="#000000" >
        <RelativeLayout
            android:id="@+id/RelativeLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:background="@drawable/bar"
            android:paddingBottom="2dp"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:paddingTop="2dp" >
            <ImageButton
                android:id="@+id/infop"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:background="@drawable/info_select_blue" />
            <ImageButton
                android:id="@+id/share"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:background="@drawable/share_selector_blue" />
            <ImageButton
                android:id="@+id/moreaps"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_marginRight="20dp"
                android:background="@drawable/more_selector_blue" />
        </RelativeLayout>
    </RelativeLayout>
    <GridView
        android:id="@+id/grid_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/view"
        android:layout_below="@+id/sbsz"
        android:columnWidth="110dp"
        android:horizontalSpacing="10dp"
        android:listSelector="#00000000"
        android:numColumns="auto_fit"
        android:verticalSpacing="12dp" >
    </GridView>
    <SeekBar
        android:id="@+id/sbsz"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/upperBar"
        android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_dark"
        android:thumb="@drawable/apptheme_scrubber_control_selector_holo_dark" />
    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="@string/banner" >
    </com.google.android.gms.ads.AdView>
    <View
        android:id="@+id/view"
        android:layout_width="fill_parent"
        android:layout_height="17dp"
        android:layout_above="@+id/adView"
        android:layout_alignParentLeft="true"
        android:background="@drawable/bar"
        android:visibility="visible" />

</RelativeLayout>

您必须通过编程检查是否存在广告。如果没有广告,则只需设置

adView.setVisibility(View.GONE) 
否则


就这样

通过添加android:visibility=“gone”最初隐藏您的adView


这将导致与旧Admob SDK完全相同的行为。

哦,是的。我正在考虑检查设备是否连接到互联网,然后用布尔值制作一些东西,但这样更好。谢谢这会引起问题的。如果您有internet,但由于填充和任何原因,第一个广告无法加载,您的广告将永远不会刷新,也不会在以后再次显示,因为视图是隐藏的,admob会说“广告不可见,不刷新”。另一种情况是,互联网关闭,因此adview被隐藏,然后他们打开互联网,你可以离开它,不再显示广告,或者再次显示adview区域,如果由于其他原因仍然失败,它将显示原始问题。问题是,如果广告加载失败一次,横幅将消失,因此也不会有广告刷新。如果广告视图不可见,AdMob不会刷新广告。@user846316,只需从代码中智能调用adView load ad函数即可。除非广告在第一次失败时不会加载,但在第二次/以后刷新时可以加载
adView.setVisibility(View.Visible)
<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:visibility="gone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="@string/banner" >
</com.google.android.gms.ads.AdView>
adView.setAdListener(new AdListener() {

    @Override
    public void onAdLoaded() {
        adView.setVisibility(View.VISIBLE);
    }

    @Override
    public void onAdFailedToLoad(int error) {
        adView.setVisibility(View.GONE);
    }    

});