Google Ads MediaView неправильно изменяет высоту до wrap_content при отображении изображения - PullRequest
0 голосов
/ 30 августа 2018

Сегодня я получил письмо от AdMob, в котором говорилось:

Изменение политики в отношении нативных объявлений. Для нативных объявлений MediaView требуется рендеринг видео или основного изображения актива. Чтобы помочь вам доставить более удобная реклама, начиная с 29 октября, нативная реклама потребуется MediaView для рендеринга видео или основного изображения. Объявление устройства, не соответствующие этой дате, прекратят показ объявлений, что может повлиять на доход от рекламы.

Я попробовал это в своем приложении для Android, убрав отдельную обработку изображений с ImageView и видео с MediaView, но я обнаружил, что MediaView не изменяет высоту вида в соответствии с высотой изображения, которое он дисплеи.

В этом примере кодовой метки от Google используются фиксированная высота и ширина для MediaView. Я не могу этого сделать, так как этот экран реагирует на размер экрана, который будет меняться в зависимости от устройства. Тот факт, что размер изображения можно динамически изменять, является одним из основных преимуществ использования UnifiedNativeAds вместо стандартных объявлений, таких как баннеры.

Вот как мне нужно отобразить MediaView, используя match_parent для ширины и wrap_content для высоты.

<com.google.android.gms.ads.formats.MediaView
            android:id="@+id/ad_media"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"/>

Это то, что я сейчас получаю из приведенного выше кода

Это то, что мне нужно, и я ожидаю, что это будет выглядеть при использовании wrap_content

В предыдущем случае, когда мы могли визуализировать изображения по отдельности с помощью ImageView, значение wrap_content правильно отразило размер изображения.

У кого-нибудь есть обходной путь для этого? Как я могу следовать новым требованиям Google без жесткого кодирования высоты MediaView?

Мой полный код можно найти здесь , в моем демонстрационном приложении на github.

1 Ответ

0 голосов
/ 31 августа 2018
mediaView.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
    @Override
    public void onChildViewAdded(View parent, View child) {
        if (child instanceof ImageView) {
            ImageView imageView = (ImageView) child;
            imageView.setAdjustViewBounds(true);
        }
    }

    @Override
    public void onChildViewRemoved(View parent, View child) {}
});
...