我有一个相对布局,其中包含:
- adView 在父布局的底部对齐。其他
- 包含应用程序视图(如按钮等)的相对布局。
众所周知,广告有时不可用或 wifi 已关闭,因此在广告不可用时将 adview 空间留空是不明智的。因此,我希望内部相对布局在广告横幅出现时自动向上移动。我该怎么做?
我有一个相对布局,其中包含:
众所周知,广告有时不可用或 wifi 已关闭,因此在广告不可用时将 adview 空间留空是不明智的。因此,我希望内部相对布局在广告横幅出现时自动向上移动。我该怎么做?
我为解决这个问题所做的是将 adview 嵌入到一个空的线性布局中,AdView 默认为 visibility:gone。我在 AdView 中添加了一个 AdListener,并在 AdListener 的 onAdLoaded 方法中将可见性设置为“可见”。
<LinearLayout android:id="@+id/ad_wrapper"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<AdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
android:visibility="gone"/>
</LinearLayout>
接着
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
adView.setVisibility(View.VISIBLE);
}
});
我建议将您的 RelativeLayout 嵌入到 LinearLayout 中,将 LinearLayout 方向设置为垂直,例如:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- Your Ad view -->
<RelativeLayout ....>
<!-- items -->
</RelativeLayout>
</LinearLayout>
如果您在代码中将 adview 设置为 View.GONE,LinearLayout 中的位置将被替换,并且下面的内容(RelativeLayout)将向上移动。
为什么说“在广告不可用时将 adview 空间留空是不明智的”?
这样做绝对没有错,让它可见通常可以使您的布局更易于管理。
但是,如果您真的想在没有可用广告时隐藏它,请使用 AdListener 方法设置 AdView 的可见性。