I have a smart banner at the bottom of my portrait.
My layout is as follows:
<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>
My manifest has the appropriate permissions, and this is:
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" > </activity>
And my ads are initialized with this code:
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); }
When I launch the application, my ads do not appear. LogCat gives me the following:
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>
The device is a Galaxy S3. It seems that the wrong size requirements ((720, 100) are certainly too big for a mobile phone app?).
SMART_BANNER is declared in XML, so I canβt believe that AdView needs to be regenerated, because it should already know the dimensions on the first instance?
Any ideas?
EDIT:
If I put SMART_BANNER inside only the outermost layout, this is 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>
And this error message:
08-01 12:59:38.120: E/Ads(22919): Not enough space to show ad! Wants: <720, 100>, Has: <720, 0>
I suspect this is due to the fact that RelativeLayout and Button populated LinearLayout and left no room for AdView. Is there a way to assign height_contents the height value for viewing without affecting the RelativeLayout?
Edit: Solution:
This gets about 95% of the way (good enough :)). TextSwitcher is about 1% of the dead center, and it has a slightly limited height, but you would not have noticed if you had not stared and compared for several hours. Hope this helps someone. Thanks to Harshid and William for their input.
<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>