How to make admob SMART_BANNER ads correctly filled in Android?

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.

 <!-- 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> 
+4
source share
5 answers

I think your Admob banner is in the layout.

Place the banner on the side of the layout and on the main layout . Because you used indentation, margin and blah blah ..

 <Your Main Layout> <Secondary Layout> < Layout /> </Secondary Layout> //put your banner here </Your Main Layout> 

try this method.

+4
source

Make sure there is no padding in your external layout

 <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" > 
+6
source

If you want to use your second layout, you must specify a relative layout_weight of 1 (layout_weight only, applies to LinearLayouts). This will tell it to expand to fill any unused space in the containing LinearLayout.

Suggest you read http://developer.android.com/guide/topics/ui/declaring-layout.html to better understand Android layouts, you use the RelativeLayout and LinearLayout attributes indiscriminately. Some layout attributes apply to only one layout type.

 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ...> <Button android:layout_width="match_parent" android:layout_height="wrap_content" .../> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" ...> <TextSwitcher android:layout_width="match_parent" android:layout_height="wrap_content" .../> </RelativeLayout> <com.google.ads.AdView android:id="@+id/bannerAd" android:layout_width="match_parent" android:layout_height="wrap_content" ads:adSize="SMART_BANNER" ads:adUnitId="@string/admobId" /> </LinearLayout> 
+1
source

Check your dp device and load it using various ad constants (banner, leaders, etc.) with the corresponding key specified in admob-mediation.

0
source

From your XML code, remove the four Padding Attributes , i.e. PaddingBottom, PaddingLeft, PaddingRight, PaddingTop

0
source

Source: https://habr.com/ru/post/1494702/


All Articles