Можно ли использовать нативную рекламу admob с StaggeredGridLayoutManager?

Я следую руководствам admob firebase, чтобы добавить расширенные нативные объявления admob в мой recyclerviewadapter. Я могу легко отображать объявления среднего и большого типа. Но мое приложение также включает шахматную сетку в качестве типа просмотра. Но я не могу отображать рекламу в этом формате и вижу только белый экран в строке объявлений. Я думаю, что это проблема размера, но в admob нет размера для формата строки в шахматном порядке. Это ограничивает минимальное значение ширины 280dp. Есть ли способ показывать рекламу в шахматном порядке? Если нет, то можете ли вы посоветовать мне другого поставщика рекламы, такого как admob, для решения этой проблемы?


person slymnozdmrc    schedule 10.08.2017    source источник


Ответы (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);
}

Если вы можете следить за этим примером проекта, вы можете найти другой класс и компоновка. Потому что это модифицированная версия этого проекта. Я надеюсь, что это решение работает с другими, такими как я.

person slymnozdmrc    schedule 21.08.2017
comment
идеальное решение.!! - person Kalpesh Mayani; 04.04.2018
comment
@kalpesh-mayani обе приведенные выше ссылки не существуют, не могли бы вы обновить их с помощью правильной? - person SudP; 24.08.2018