web-dev-qa-db-ja.com

Google Ads MediaViewは、画像を表示するときに高さをwrap_contentに正しくサイズ変更しません

今日、AdMobから次のようなメールが届きました。

ネイティブ広告ポリシーへの変更:ネイティブ広告では、動画またはメインの画像アセットをレンダリングするためにMediaViewが必要になります。より良い広告体験をより簡単に提供できるようにするため、10月29日以降、ネイティブ広告ではMediaViewが動画またはメインの画像アセットをレンダリングする必要があります。この日付までに準拠していない広告ユニットは広告の配信を停止し、広告収益に影響を与える可能性があります。

Androidアプリでこれを試し、ImageViewの画像とMediaViewの動画の個別の処理を削除しましたが、MediaViewはそうではないことがわかりました表示される画像の高さに応じて、ビューの高さのサイズを変更します。

this Googleのcodelabの例では、MediaViewの固定の高さと幅が使用されています。この画面は画面サイズに反応するため、これはできません。画面サイズはデバイスによって異なります。画像のサイズを動的に変更できるという事実は、バナーなどの事前定義された広告の代わりにUnifiedNativeAdsを使用する主な利点の1つです。

これは、幅にmatch_parentを使用し、高さにwrap_contentを使用して、MediaViewを表示する必要がある方法です。

<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値が画像のサイズを正しく設定していました。

誰かがこれの回避策を持っていますか? MediaViewの高さをハードコーディングせずに、新しいGoogleの要件に準拠するにはどうすればよいですか。

私の完全なコードは、githubのデモアプリにあります ここ

12
Sarah
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) {}
});
18
Richard

同じ問題に直面していました。試行錯誤を繰り返した結果、ラッピング<FrameLayout...>UnifiedNativeAdViewを追加している)とScrollViewを使用すると、この問題が解決します。

0
Smeet
for (int i = 0; i < mediaView.getChildCount(); i++) {
    View view = mediaView.getChildAt(i);
    if (view instanceof ImageView) {
        ((ImageView) view).setAdjustViewBounds(true);
    }
}

これは私にとってはうまくいきます。私はリチャードの答えを試しましたが、RecyclerViewではうまくいきませんでした。

0
Zimmer Zhou