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

时间:2014-06-09 11:28:26

标签: android view ads

我最近从Admob SDK更改为GPS Lib,有一件事困扰着我。 我有一个简单的视图来定义我的布局中的行,以防止用户无意中点击广告。使用Admob SDK时,如果没有广告,该行会降至布局的底部,但使用GPS Lib,该视图仍会保留在原来的位置。 enter image description here

当没有广告时,当用户在离线模式下使用应用时,就会出现空洞的丑陋空间。 enter image description here

如果没有广告,我该如何摆脱这个空间? 这是我的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>

2 个答案:

答案 0 :(得分:18)

最初通过添加android:visibility =&#34; off&#34;

来隐藏您的adView
<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>

现在处理setAdListener

中的广告可见性
adView.setAdListener(new AdListener() {

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

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

});

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

答案 1 :(得分:4)

您必须以编程方式检查广告是否存在。如果广告不存在,则只需设置

adView.setVisibility(View.GONE) 

否则

adView.setVisibility(View.Visible)

多数民众赞成......