Можно ли использовать Adobob нативную рекламу с StaggeredGridLayoutManager?
Я следую инструкциям AdMob для Firebase, чтобы добавить расширенную нативную рекламу AdMob в мою программу. Я могу легко показывать объявления со средним и большим типом рекламы. Но мое приложение также включает в себя шахматную сетку в качестве типа просмотра. Но я не могу отображать рекламу в этом формате и вижу только белый экран в строке объявлений. Я думаю, что это проблема размера, но нет размера для шахматного формата строки в admob. Это ограничивает меня минимальным значением ширины 280dp. Есть ли способ показывать рекламу в шахматном порядке? Если нет, то можете ли вы посоветовать мне другого поставщика рекламы, такого как admob, для решения этой проблемы?
1 ответ
Я решил эту проблему, используя GridLayoutManager вместо StaggeredGridLayoutManager, благодаря Крису в этом ответе групп Google.
Вот решение
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);
}
Если вы можете следовать этому примеру проекта, вы можете найти другой класс и макет. Потому что это модифицированная версия этого проекта. Я надеюсь, что это решение работает на других, как я.