gpt4 book ai didi

android - 如何在 Android 中正确填写来自 admob 的 SMART_BANNER 广告?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:09 26 4
gpt4 key购买 nike

我的肖像应用底部有一个智能横幅。

我的布局是这样的:

<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>

我的 list 具有适当的权限,并且:

<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>

该设备是 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>

这是错误信息:

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 留下空间。有没有办法在不影响 RelativeLayout 的情况下将 wrap_contents 的高度值分配给 adview?

编辑:解决方案:

这已经完成了大约 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>

最佳答案

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

<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" >

关于android - 如何在 Android 中正确填写来自 admob 的 SMART_BANNER 广告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17991497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com