是否可以将 admob 原生广告与 StaggeredGridLayoutManager 一起使用?
Is it possible to use admob native ads with StaggeredGridLayoutManager?
我按照 firebase admob guides 将 admob 高级原生广告添加到我的 recyclerviewadapter。我可以轻松展示中型和大型广告类型的广告。但我的应用程序还包括交错网格作为视图类型。但是我无法显示这种格式的广告,我只能在广告行中看到白屏。我认为这是大小问题,但 admob 中没有交错行格式的大小。它限制了我 280dp 的最小宽度值。有没有办法以交错格式显示广告?如果没有,那么你能建议我使用其他广告提供商(如 admob)来解决这个问题吗?
我使用 GridLayoutManager 而不是 StaggeredGridLayoutManager 解决了这个问题,感谢 Chris google groups answer。
这是解决方案
public static final int ITEMS_PER_AD = 8;
private GridLayoutManager mLayoutManager;
// The Native Express ad height.
private static final int NATIVE_EXPRESS_AD_HEIGHT = 150;
// The Native Express ad unit ID.
private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/1072772517";
// The RecyclerView that holds and displays Native Express ads and menu items.
private RecyclerView mRecyclerView;
// List of Native Express ads and MenuItems that populate the RecyclerView.
private List<Object> mRecyclerViewItems = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLayoutManager = new GridLayoutManager(this, 2);
mLayoutManager.setSpanSizeLookup(new
GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (position % MainActivity.ITEMS_PER_AD == 0) {
return 2;
}
return 1;
}
});
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
// Use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView.
mRecyclerView.setHasFixedSize(true);
// Specify a linear layout manager.
mRecyclerView.setLayoutManager(mLayoutManager);
// Update the RecyclerView item's list with menu items and Native Express ads.
addMenuItemsFromJson();
addNativeExpressAds();
setUpAndLoadNativeExpressAds();
// Specify an adapter.
RecyclerView.Adapter adapter = new RecyclerViewAdapter(this, mRecyclerViewItems);
mRecyclerView.setAdapter(adapter);
}
如果你能按照this sample project,你可以找到其他class和布局。因为这是该项目的修改版本。
我希望这个解决方案对像我一样的其他人有效。
我按照 firebase admob guides 将 admob 高级原生广告添加到我的 recyclerviewadapter。我可以轻松展示中型和大型广告类型的广告。但我的应用程序还包括交错网格作为视图类型。但是我无法显示这种格式的广告,我只能在广告行中看到白屏。我认为这是大小问题,但 admob 中没有交错行格式的大小。它限制了我 280dp 的最小宽度值。有没有办法以交错格式显示广告?如果没有,那么你能建议我使用其他广告提供商(如 admob)来解决这个问题吗?
我使用 GridLayoutManager 而不是 StaggeredGridLayoutManager 解决了这个问题,感谢 Chris google groups answer。
这是解决方案
public static final int ITEMS_PER_AD = 8;
private GridLayoutManager mLayoutManager;
// The Native Express ad height.
private static final int NATIVE_EXPRESS_AD_HEIGHT = 150;
// The Native Express ad unit ID.
private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/1072772517";
// The RecyclerView that holds and displays Native Express ads and menu items.
private RecyclerView mRecyclerView;
// List of Native Express ads and MenuItems that populate the RecyclerView.
private List<Object> mRecyclerViewItems = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLayoutManager = new GridLayoutManager(this, 2);
mLayoutManager.setSpanSizeLookup(new
GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (position % MainActivity.ITEMS_PER_AD == 0) {
return 2;
}
return 1;
}
});
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
// Use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView.
mRecyclerView.setHasFixedSize(true);
// Specify a linear layout manager.
mRecyclerView.setLayoutManager(mLayoutManager);
// Update the RecyclerView item's list with menu items and Native Express ads.
addMenuItemsFromJson();
addNativeExpressAds();
setUpAndLoadNativeExpressAds();
// Specify an adapter.
RecyclerView.Adapter adapter = new RecyclerViewAdapter(this, mRecyclerViewItems);
mRecyclerView.setAdapter(adapter);
}
如果你能按照this sample project,你可以找到其他class和布局。因为这是该项目的修改版本。 我希望这个解决方案对像我一样的其他人有效。