在您的布局文件(例如,main.xml):
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/adsContainer">
<com.admob.android.ads.AdView
android:id="@+id/admobAds"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:backgroundColor="#000000"
app:primaryTextColor="#FFFFFF"
app:secondaryTextColor="#CCCCCC">
</LinearLayout>
(LinearLayout) adscontainer = (LinearLayout) findViewById(R.id.adsContainer);
View admobAds = (View) findViewById(R.id.admobAds);
adscontainer.removeView(admobAds);
this将“永久”(对于应用程序的生命周期)从Layou中删除广告,这意味着不会要求任何广告。
我还想使用户能够禁用广告 - 为什么如果他们不想看到他们?为什么您应该期望人们为该选择付费?
,我概述了我在这篇文章
中如何做到这一点。这篇文章更详细地介绍,但这是相关部分:
private void hideAd() {
final AdView adLayout = (AdView) findViewById(R.id.adView1);
runOnUiThread(new Runnable() {
@Override
public void run() {
adLayout.setEnabled(false);
adLayout.setVisibility(View.GONE);
}
});
}
要把它们重新打开(以防万一任何人感到慷慨)
private void showAd() {
final AdView adLayout = (AdView) findViewById(R.id.adView1);
runOnUiThread(new Runnable() {
@Override
public void run() {
adLayout.setEnabled(true);
adLayout.setVisibility(View.VISIBLE);
adLayout.loadAd(new AdRequest());
}
});
}
不幸的是,
setVisibility(View.GONE);
+setEnabled(false)
到目前为止,对我有用的唯一解决方案是:
protected void removeAdView(int adViewId) {
View view = getWindow().getDecorView();
View adView = view.findViewById(adViewId);
if (adView != null) {
ViewGroup parent = (ViewGroup) adView.getParent();
parent.removeView(adView);
parent.invalidate();
}
}
碎片:
protected void removeAdView(View topView, int adViewId) {
View adView = topView.findViewById(adViewId);
if (adView != null) {
ViewGroup parent = (ViewGroup) adView.getParent();
parent.removeView(adView);
parent.invalidate();
}
}
该解决方案基于 @Quartertone的答案,但扩展到更为通用(即与所有
ViewGroup
不仅与所有
LinearLayout
一起使用)。只需将这些方法放入您的基本活动/碎片类中即可。
创建了一个从adview派生的新类;
package com.MyApp;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
public class MyAdView extends com.google.ads.AdView {
public MyAdView(Activity activity, AdSize adSize, String adUnitId) {
super(activity, adSize, adUnitId);
if (MyApp.m_ads_enabled) {
AdRequest adRequest = new AdRequest();
loadAd(adRequest);
}
}
public MyAdView(Context context, AttributeSet attrs)
{
super(context, attrs);
if (MyApp.m_ads_enabled) {
AdRequest adRequest = new AdRequest();
loadAd(adRequest);
}
}
MyAdView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
if (MyApp.m_ads_enabled) {
AdRequest adRequest = new AdRequest();
loadAd(adRequest);
}
}
在您的XML中使用AdView
loadAdOnCreate
false
,例如;
<com.MyApp.MyAdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="0"
ads:adSize="BANNER"
ads:loadAdOnCreate="false"/>
,然后,根据您调用时的值
MyApp.m_ads_enabled
的值
setContentView()
广告将被禁用或启用。这种方法的优势是,由于禁用广告,不会将数据带宽使用,因为广告永远不会要求,这对有限或PAYG数据合同中的某人可能很重要。
gone“ I/ADS:AD不可见。不刷新AD。就足够了。如果您读取logcat输出,它将打印
为您所拥有的一切,只是为了安全的一面:
if (mAdView != null) {
mAdView.setEnabled(false);
mAdView.setVisibility(View.GONE);
ViewGroup parent = (ViewGroup) mAdView.getParent();
if (parent != null) parent.removeView(mAdView);
mAdView.removeAllViews();
mAdView.destroy();
}
我不确定删除建议后的布局是否会反弹;如果不是,则可以创建一个相同的(除了缺少AD)布局。 在您的发电量中,选择适当的布局。 然后,您只需要确保在用户进行选择后触发配置更改(可能已经根据您让他们选择的方式进行 - 例如,从偏好屏幕返回)。
制作一个称为Ads
现在在课堂上导入它,您想从 使用
Ads.Remove(AdView, parent);
删除它。 `ads.Remove(“添加视图本身”,位于其位置的视图组或布局”);
这里是2025年暂停或恢复广告视图的解决方案:
adView.pause()
adView.visibility = View.GONE
adView.resume()
adView.visibility = View.VISIBLE
P。 vel_dan:爱你做什么💚。