如何在没有互联网可用时更改 ADMOB 广告的背景颜色
How to Change Background Color of ADMOB Ad When No Internet Available
我的布局底部有一个 ADMOB 广告,但是当没有互联网并且 adView 设置为 View.INVISIBLE 时,背景颜色仍然出现。
这是我的:
在互联网上,广告显示在彩色区域内,以遮挡其下方的列表视图项目。像这样:
在没有打开 Internet 的情况下,我只能看到显示的广告的背景颜色:
我真正想要发生的是:
这是我显示广告的代码
MobileAds.initialize(this, "App Unit Id Here");
if (isNetworkConnected() == true) {
AdView adView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
我用于检查是否存在 Internet 的代码:
private boolean isNetworkConnected() {
AdView adView = (AdView) findViewById(R.id.adView);
ConnectivityManager cm = (ConnectivityManager) getSystemService( Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
//Set the visibility to "gone".
//You can set visibility to gone here or when the function returns,
//that is why there is a return false and true.
adView.setBackgroundColor(0xFF00FF00);
adView.setVisibility(View.GONE);
return false;
adView.setVisibility(View.INVISIBLE);
return false;
} else
return true;
}
XML 广告的布局部分
<LinearLayout
android:id="@+id/wrappers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:clipToPadding="false"
android:background="?attr/colorPrimary"
ads:adSize="SMART_BANNER"
ads:adUnitId="ca-app-pub-3736316423083905/5672164398"
android:visibility="visible">
</com.google.android.gms.ads.AdView>
</LinearLayout>
当我将adView设置为不可见时,是否可以将背景颜色更改为透明?我尝试了几种不同的方法,但它们没有用,而且我似乎无法在 Stack 上找到任何关于此的内容。我很难相信以前没有人想做这样的事情。
如有任何帮助,我们将不胜感激。
这就是您的实施方式。
- 只需将 AdListener 设置为 Adview。加载失败只是 setVisibilityy GONE。
Example :-
1) 首先加载 Adview :-
AdView adView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
2) 设置 AdListener :-
adView.setAdListener(new AdListener() {
private void showToast(String message) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
@Override
public void onAdLoaded() {
showToast("Ad loaded.");
if (adView.getVisibility() == View.GONE) {
adView.setVisibility(View.VISIBLE);
}
}
@Override
public void onAdFailedToLoad(int errorCode) {
if (adView.getVisibility() == View.VISIBLE) {
adView.setVisibility(View.GONE);
}
}
@Override
public void onAdOpened() {
showToast("Ad opened.");
}
@Override
public void onAdClosed() {
showToast("Ad closed.");
}
@Override
public void onAdLeftApplication() {
showToast("Ad left application.");
}
});
我的布局底部有一个 ADMOB 广告,但是当没有互联网并且 adView 设置为 View.INVISIBLE 时,背景颜色仍然出现。
这是我的:
在互联网上,广告显示在彩色区域内,以遮挡其下方的列表视图项目。像这样:
在没有打开 Internet 的情况下,我只能看到显示的广告的背景颜色:
我真正想要发生的是:
这是我显示广告的代码
MobileAds.initialize(this, "App Unit Id Here");
if (isNetworkConnected() == true) {
AdView adView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
我用于检查是否存在 Internet 的代码:
private boolean isNetworkConnected() {
AdView adView = (AdView) findViewById(R.id.adView);
ConnectivityManager cm = (ConnectivityManager) getSystemService( Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
//Set the visibility to "gone".
//You can set visibility to gone here or when the function returns,
//that is why there is a return false and true.
adView.setBackgroundColor(0xFF00FF00);
adView.setVisibility(View.GONE);
return false;
adView.setVisibility(View.INVISIBLE);
return false;
} else
return true;
}
XML 广告的布局部分
<LinearLayout
android:id="@+id/wrappers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:clipToPadding="false"
android:background="?attr/colorPrimary"
ads:adSize="SMART_BANNER"
ads:adUnitId="ca-app-pub-3736316423083905/5672164398"
android:visibility="visible">
</com.google.android.gms.ads.AdView>
</LinearLayout>
当我将adView设置为不可见时,是否可以将背景颜色更改为透明?我尝试了几种不同的方法,但它们没有用,而且我似乎无法在 Stack 上找到任何关于此的内容。我很难相信以前没有人想做这样的事情。
如有任何帮助,我们将不胜感激。
这就是您的实施方式。
- 只需将 AdListener 设置为 Adview。加载失败只是 setVisibilityy GONE。
Example :-
1) 首先加载 Adview :-
AdView adView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
2) 设置 AdListener :-
adView.setAdListener(new AdListener() {
private void showToast(String message) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
@Override
public void onAdLoaded() {
showToast("Ad loaded.");
if (adView.getVisibility() == View.GONE) {
adView.setVisibility(View.VISIBLE);
}
}
@Override
public void onAdFailedToLoad(int errorCode) {
if (adView.getVisibility() == View.VISIBLE) {
adView.setVisibility(View.GONE);
}
}
@Override
public void onAdOpened() {
showToast("Ad opened.");
}
@Override
public void onAdClosed() {
showToast("Ad closed.");
}
@Override
public void onAdLeftApplication() {
showToast("Ad left application.");
}
});