0

私は、 Samsung S3 Mini や Google Nexus S などのデバイス用に追加の縦長のレイアウトを作成しました。これらの縦長の幅は 480 ピクセルです。

この複製されたレイアウトを追加するために、Android Studio を使用して[その他を作成] を選択し、次に[密度] を選択し、[高密度]を選択して、新しいフォルダー内にレイアウトのコピーを提供しました。AVDres/layout-hdpiを使用すると、レイアウトはエミュレーターでほとんど問題なく動作します。 480 x 800 の画面サイズ用に作成されました (物事が表示され、期待どおりの場所に表示されます)。

layout-sw360dp-portただし、他のレイアウト (と など) で正常に機能する私の AdMob 広告layout-sw600dp-portは表示されません。LogCat の状態Not enough space to show ad. Needs 480x75, but only has 432x570

これは私には部分的に理にかなっています.Androidの設計ガイドラインに従って、RelativeLayoutが存在するとセットのcom.google.android.gms.ads.AdView両方があり、それぞれ約24ピクセルでなければなりません.android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"

したがって、使用可能な水平方向のスペースが 480 (デバイスの幅) ではなく、432 (RelativeLayout後のパディングの幅) であることは理にかなっています。

しかし、なぜ広告は横方向のすべてのスペースが必要だと考えるのでしょうか?

広告の XML は次のようになります。

<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adUnitId="@string/adUNITID"
    ads:adSize="BANNER"
    android:id="@+id/adView"
    android:layout_alignParentStart="false"
    android:layout_alignParentEnd="false"
    android:layout_alignParentBottom="true" />

ドキュメントは、タイプの広告にBANNERは「320x50 密度に依存しないピクセル」が必要であることを暗示しています。LogCat で 480 が必要であると言う理由がわかりません。

で広告が表示されなかったのでBANNER、試してみましSMART_BANNERたが(これは「全幅の動的サイズのバナー」です)、表示に失敗しました(LogCatに同じメッセージが表示されます)。

ここで明らかな何かが欠けていますか?BANNERSamsung S3 Mini や Google Nexus S などのデバイスでは、通常のサイズの広告 (利用可能なスペースに簡単に収まると思います) が表示できないと言っている理由について困惑しています。そのパディングを削除する必要がありますか?持っているのRelativeLayoutは?それは良い考えですか?

4

1 に答える 1

2

私は最終的に、内部LinearLayoutに2つのアイテムを含むトップレベルを作成することでこれを行うことができました. RelativeLayoutUI コンポーネントの1 つRelativeLayoutは、Android デザイン ガイドライン (および見栄えの良いもの) で提案されているように、そのパディングを維持できます。もう 1 つRelativeLayoutはパディングがないため、広告は内側に収まります (以前は、480 ピクセルの画面スペースが必要であると不平を言っていました)。

UIRelativeLayoutには がandroid:layout_weight="1"あり、広告RelativeLayoutにはandroid:layout_weight="7.2"- があります。これは、画面が 480 x 800 (hdpi) のデバイスで機能するようです。

私には少しハックのように感じますが、うまくいきます。

于 2014-02-28T15:07:30.807 に答える