仅限 Admob NativeExpressAdView java
Admob NativeExpressAdView only java
在不使用布局文件的情况下从 admob 使用 NativeExpressAdView
的任何方式 (xml)。
我只使用 java 文件创建视图,想知道如何从 java 文件为 NativeExpressAdView
创建视图?
编辑:
我试过了
NativeExpressAdView adView = new NativeExpressAdView(activity);
AdSize adSize = new AdSize(280, 80);
adView.setAdSize(adSize);
adView.setAdUnitId(getString(R.string.ad_unit_id));
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, adSize.getHeightInPixels(activity));
adView.setLayoutParams(layoutParams);
AdRequest request = new AdRequest.Builder().build();
adView.loadAd(request);
linear_layout.addView(adView);
这段代码给我一个黑色的空视图width:280dp, height: 80dp
像这样的东西应该可以工作....首先 "reserve" 通过创建文件 /res/values/ids.xml
:
为视图设置一个 id
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="nativeExpressAdId" type="id"/>
</resources>
在 API 版本的 Android > 17 上,您可以 generate the ID on the fly,但您会失去向后兼容性。
接下来添加一个条目到'/res/values/strings.xml`:
<string name="adUnitId">ca-app-pub-12345678901234567890etc</string>
然后在代码中:
NativeExpressAdView adView = new NativeExpressAdView(this);
adView.setId(R.id.nativeExpressAdId);
int height = 80; // or whatever is appropriate - make sure its >= ad minimum
// set the size to the width of the screen
adView.setAdSize(new AdSize((int) (AdSize.FULL_WIDTH, height));
adView.setAdUnitId(getString(R.string.adUnitId));
// assuming this goes in a linearlayout... you can also addRules to lp
LinearLayout.LayoutParams lp = new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
// set margins manually (`.setMargins()`) or add rules with (`.addRule()`)
// or .setVisibility() etc... to lp
adView.setLayoutParams(lp);
然后使用parent.addView(adView)
将其插入到父容器中。这不完全是我使用的代码(我使用的是 RelativeLayout),但它非常接近,所以应该让你开始。
如果您需要在轮播时生成新广告,则此类代码很有用,因为您无法调整现有广告的大小。您可以 "borrow" 之前的 ID、可见性、布局等,并将其应用到新的。有关类似示例,请参阅 here。
提示:确保在删除 nativeexpressadview 之前停止任何 运行 动画,因为这可能会导致旧版 webview 崩溃,例如 kitkat 中的那些。
这与其他的非常相似,但宽度和高度很重要,您还需要一个 AdRequest
NativeExpressAdView mNativeExpressAdView = new NativeExpressAdView(this;
mNativeExpressAdView.setLayoutParams(new NativeExpressAdView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mNativeExpressAdView.setAdSize(new AdSize(AdSize.FULL_WIDTH, 132)); // here 132 is the medium size
mNativeExpressAdView.setAdUnitId("YOUR AD_UNIT ID");
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
//adRequestBuilder.addTestDevice("28776EC697A5120CBA87CB573E26544A"); //if needed
<parent view>.adcontainer.addView(mNativeExpressAdView);
mNativeExpressAdView.loadAd(adRequestBuilder.build());
在不使用布局文件的情况下从 admob 使用 NativeExpressAdView
的任何方式 (xml)。
我只使用 java 文件创建视图,想知道如何从 java 文件为 NativeExpressAdView
创建视图?
编辑:
我试过了
NativeExpressAdView adView = new NativeExpressAdView(activity);
AdSize adSize = new AdSize(280, 80);
adView.setAdSize(adSize);
adView.setAdUnitId(getString(R.string.ad_unit_id));
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, adSize.getHeightInPixels(activity));
adView.setLayoutParams(layoutParams);
AdRequest request = new AdRequest.Builder().build();
adView.loadAd(request);
linear_layout.addView(adView);
这段代码给我一个黑色的空视图width:280dp, height: 80dp
像这样的东西应该可以工作....首先 "reserve" 通过创建文件 /res/values/ids.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="nativeExpressAdId" type="id"/>
</resources>
在 API 版本的 Android > 17 上,您可以 generate the ID on the fly,但您会失去向后兼容性。
接下来添加一个条目到'/res/values/strings.xml`:
<string name="adUnitId">ca-app-pub-12345678901234567890etc</string>
然后在代码中:
NativeExpressAdView adView = new NativeExpressAdView(this);
adView.setId(R.id.nativeExpressAdId);
int height = 80; // or whatever is appropriate - make sure its >= ad minimum
// set the size to the width of the screen
adView.setAdSize(new AdSize((int) (AdSize.FULL_WIDTH, height));
adView.setAdUnitId(getString(R.string.adUnitId));
// assuming this goes in a linearlayout... you can also addRules to lp
LinearLayout.LayoutParams lp = new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
// set margins manually (`.setMargins()`) or add rules with (`.addRule()`)
// or .setVisibility() etc... to lp
adView.setLayoutParams(lp);
然后使用parent.addView(adView)
将其插入到父容器中。这不完全是我使用的代码(我使用的是 RelativeLayout),但它非常接近,所以应该让你开始。
如果您需要在轮播时生成新广告,则此类代码很有用,因为您无法调整现有广告的大小。您可以 "borrow" 之前的 ID、可见性、布局等,并将其应用到新的。有关类似示例,请参阅 here。
提示:确保在删除 nativeexpressadview 之前停止任何 运行 动画,因为这可能会导致旧版 webview 崩溃,例如 kitkat 中的那些。
这与其他的非常相似,但宽度和高度很重要,您还需要一个 AdRequest
NativeExpressAdView mNativeExpressAdView = new NativeExpressAdView(this;
mNativeExpressAdView.setLayoutParams(new NativeExpressAdView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mNativeExpressAdView.setAdSize(new AdSize(AdSize.FULL_WIDTH, 132)); // here 132 is the medium size
mNativeExpressAdView.setAdUnitId("YOUR AD_UNIT ID");
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
//adRequestBuilder.addTestDevice("28776EC697A5120CBA87CB573E26544A"); //if needed
<parent view>.adcontainer.addView(mNativeExpressAdView);
mNativeExpressAdView.loadAd(adRequestBuilder.build());