使用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
最佳答案
这样的事情应该起作用。...首先通过创建文件/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)不完全相同,但是已经很接近了,因此应该让您入门。如果您需要在旋转时生成新广告,则这种代码非常有用,因为您无法调整现有广告的大小。您可以从先前的“借用”先前的ID,可见性,布局等,并将其应用于新的ID。参见here以获得类似的示例。
提示:请确保在删除nativeexpressadview之前停止所有正在运行的动画,因为这可能会导致较旧的webview(如kitkat中的视图)崩溃。