如何在Android中正确填写admob中的SMART_BANNER广告?

Big*_*ter 4 android portrait ads banner admob

我的肖像应用程序底部有一个智能横幅.

我的布局看起来像这样:

<RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="0dp"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:paddingTop="0dp">

        <TextSwitcher
            ...
            Some TextSwitcher Stuff Here
            ... />

        <com.google.ads.AdView
            xmlns:googleads="http://schemas.android.com/apk/lib/com.google.ads"
            android:id="@+id/bannerAd"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:gravity="bottom"
            android:visibility="visible"
            googleads:adSize="SMART_BANNER"
            googleads:adUnitId="@string/admobId" />

    </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我的清单有适当的权限,这个:

<activity
            android:name="com.google.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
</activity>
Run Code Online (Sandbox Code Playgroud)

我的广告由以下代码初始化:

private void initialiseAds()
    {
        AdView adView = (AdView) findViewById(R.id.bannerAd);
        adView.setAdListener(new MyAdListener(adView));
        AdRequest adRequest = new AdRequest();
        adRequest.addKeyword("games");
        adRequest.addKeyword("tabletop games");
        adRequest.addKeyword("board games");
        adRequest.addKeyword("monopoly");
        adRequest.addKeyword("gambling");
        adRequest.addKeyword("dice");
        final TelephonyManager tm =(TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
        String deviceId = tm.getDeviceId();
        adRequest.addTestDevice(deviceId);
        adView.loadAd(adRequest);
    }
Run Code Online (Sandbox Code Playgroud)

当我运行该应用时,我的广告不会显示.LogCat给了我这个:

08-01 11:24:59.015: E/Ads(10436): Not enough space to show ad! Wants: <720, 100>, Has: <656, 935>
08-01 11:24:59.020: E/Ads(10436): Not enough space to show ad! Wants: <720, 100>, Has: <656, 935>
Run Code Online (Sandbox Code Playgroud)

该设备是Galaxy S3.这似乎是错误的尺寸要求((720,100)对于电话横幅应用来说肯定是太大了?).

SMART_BANNER以XML格式声明,因此我无法相信AdView需要重新生成,因为它必须已经知道第一个实例化的大小?

有任何想法吗?

编辑:

如果我将SMART_BANNER放在最外部的布局中,这就是XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btnRollDice"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:contentDescription="@string/buttonDescription"
        android:onClick="rollDice"
        android:text="@string/btnRoll"
        android:textSize="40sp" />

    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="0dp"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:paddingTop="0dp">

        <TextSwitcher
            android:id="@+id/diceValue"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_gravity="center"
            android:animateFirstView="false"
            android:contentDescription="@string/textSwitcherDescription"
            android:inAnimation="@anim/slide_down"
            android:outAnimation="@anim/abc_fade_out"
            android:textAlignment="center"
            android:visibility="visible" />

    </RelativeLayout>
    <com.google.ads.AdView
            android:id="@+id/bannerAd"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_margin="0dp"
            ads:adSize="SMART_BANNER"
            ads:adUnitId="@string/admobId"
            android:gravity="bottom"
            android:padding="0dp"
            android:visibility="visible" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

08-01 12:59:38.120: E/Ads(22919): Not enough space to show ad! Wants: <720, 100>, Has: <720, 0>
Run Code Online (Sandbox Code Playgroud)

我怀疑这是因为RelativeLayout和Button填充了LinearLayout并且没有留下AdView的空间.有没有办法在不影响RelativeLayout的情况下为adview分配wrap_contents的高度值?

编辑:解决方案:

这得到它约95%的方式(足够好:)).TextSwitcher死亡中心约1%,它有一个略微上限的高度但除非你盯着并比较几个小时,否则你不会注意到.希望这会对某人有所帮助.感谢Harshid和William的贡献.

<!-- This is the XML for the Portrait View of the App
It has 2 major tiers
The first tier contains 3 items:
    The Ad Banner
    The button
    The 2nd Tier
The second tier contains 1 item
    The TextSwitcher

XML is pretty readable so just read it! :)

 -->

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    tools:context=".MainActivity"
    android:id="@+id/masterContainer">


    <com.google.ads.AdView
        android:id="@+id/bannerAd"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_margin="0dp"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="@string/admobId"
        android:padding="0dp"
        android:visibility="visible" />

    <Button
        android:id="@+id/btnRollDice"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:layout_marginBottom="0dp"
        android:paddingBottom="0dp"
        android:contentDescription="@string/buttonDescription"
        android:onClick="rollDice"
        android:text="@string/btnRoll"
        android:textSize="40sp" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/bannerAd"
        android:layout_below="@id/btnRollDice"
        android:layout_margin="0dp"
        android:orientation="vertical"
        android:paddingBottom="0dp"
        android:paddingLeft="0dp"
        android:paddingRight="0dp"
        android:paddingTop="0dp" >

            <TextSwitcher
                android:id="@+id/diceValue"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="false"
                android:layout_alignParentLeft="false"
                android:layout_alignParentRight="false"
                android:layout_alignParentTop="false"
                android:layout_centerHorizontal="false"
                android:layout_centerInParent="true"
                android:layout_centerVertical="false"
                android:layout_gravity="center"
                android:animateFirstView="false"
                android:contentDescription="@string/textSwitcherDescription"
                android:inAnimation="@anim/slide_down"
                android:outAnimation="@anim/abc_fade_out"
                android:textAlignment="center"
                android:visibility="visible" />

        </RelativeLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

Hev*_*ski 6

确保外部布局没有任何填充

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"   // Change to 0dp
    android:paddingRight="0dp"  // Change to 0dp
    android:paddingTop="2dp"    >
Run Code Online (Sandbox Code Playgroud)