使用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中的视图)崩溃。

10-02 10:24