仅限 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());