我最近从Admob SDK更改为GPS Lib,有一件事困扰着我。 我有一个简单的视图来定义我的布局中的行,以防止用户无意中点击广告。使用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>
答案 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)
多数民众赞成......