我的肖像应用程序底部有一个智能横幅。如何使admob中的SMART_BANNER广告在Android中正确填充?
我的布局是这样的:
<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>
我的清单具有相应权限,这样的:
<activity
android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
</activity>
我的广告是由该代码初始化:
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);
}
当我运行应用程序,我的广告不会显示。 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>
该设备是一个银河S3。这似乎是错误的大小((720,100)肯定对于手机横幅应用程序太大)。
SMART_BANNER是用XML声明的,所以我不能相信AdView需要重新生成incode,因为它必须已经知道第一个实例的大小了吗?
任何想法?
编辑:
如果我把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>
这是错误消息:
08-01 12:59:38.120: E/Ads(22919): Not enough space to show ad! Wants: <720, 100>, Has: <720, 0>
我怀疑这是因为RelativeLayout和Button已经填充了LinearLayout并且没有留下AdView的空间。有没有办法将wrap_contents的高度值分配给adview而不影响RelativeLayout?
编辑:解:
这得到它的方式约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>
更新的问题与新的XML文件:) – BigTobster
更好,但仍不完全。横幅现在显示完美(做得好!),但容器是wrap_content,所以它填充页面的其余部分(因为smart_banner可以是任何高度)。这意味着内容被推出页面的中心。我能想到的唯一方法是回到方形1并将两个元素放在一个室内布局中! – BigTobster
不幸的是,您的答案不适用于我的问题。我试过调整它,但它严重不会一起去(我是一个noob)。我会接受你的回答,理由是它可能适用于没有与我做同样设置的其他人。谢谢你的帮助。 – BigTobster