当前位置: 首页 > 面试题库 >

出现时,android获取adMob横幅的高度

桑坚成
2023-03-14
问题内容

我正在将adMob横幅成功添加到我的应用中。出现横幅时,我需要获取其高度以调整所有布局元素的大小。我正在使用正确触发的事件onReceivedAd。但是,alturaBanner
=0。那么,如何获取其高度?谢谢。

   /** Called when an ad is received. */
    @Override
    public void onReceiveAd(Ad ad) 
    {
        adView.setVisibility(View.VISIBLE);

        int alturaBanner = adView.getHeight();

        RelativeLayout.LayoutParams params1 = (android.widget.RelativeLayout.LayoutParams) browse2
        .getLayoutParams();

        params1.setMargins(0, alturaBanner, 0, 0);

      Log.d(LOG_TAG, "onReceiveAd");
      Toast.makeText(this, "onReceiveAd", Toast.LENGTH_SHORT).show();
    }

问题答案:

在准备视图之前获取视图的高度将始终返回0。无论您使用哪种设备/屏幕,都使用下一个代码来获取正确的大小:

private static void runJustBeforeBeingDrawn(final View view, final Runnable runnable)
{
    final ViewTreeObserver vto = view.getViewTreeObserver();
    final OnPreDrawListener preDrawListener = new OnPreDrawListener()
    {
        @Override
        public boolean onPreDraw()
        {
            runnable.run();
            final ViewTreeObserver vto = view.getViewTreeObserver();
            vto.removeOnPreDrawListener(this);
            return true;
        }
    };
    vto.addOnPreDrawListener(preDrawListener);
}

在给定的runnable内部,您可以查询视图的实际大小。

或者,可以根据需要使用addOnGlobalLayoutListener而不是addOnPreDrawListener。

另一种方法是使用onWindowFocusChanged(并检查hasFocus ==
true),但这并不总是最好的方法(仅用于创建简单视图,而不用于动态创建)

编辑:替代runJustBeforeBeingDrawn:https
:http://codingdict.com/questions/111280



 类似资料:
  • 我从实施了AdMobhttps://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start?hl=en_US其在测试期间运行良好。 我以为从Play商店下载时,此横幅添加将被实际广告替换,但这并没有发生! 如何让它发生? 我错过了什么吗? 我该怎么办?

  • 我想显示我的活动广告。为此,我在manifest上添加了下一行: 关于活动xml有: 有什么建议吗?

  • admob文档中写道: 广告单元ID是应用程序中显示广告的位置的唯一标识符。为应用程序将执行的每个活动创建一个广告单元。例如,如果你有一个包含两个活动的应用程序,每个活动都显示一个横幅,那么你需要两个广告单元,每个广告单元都有自己的ID。AdMob广告单元ID的格式为ca-app-pub-xxxxxxxxxx/nnnnnnnn。 举个例子: 我有一些活动将使用横幅广告。对于每个横幅,我肯定会使用不

  • 1. 包含头文件 #import <AdHubSDK/AdHubSDK.h> 2. AdHubBannerView 的创建和初始化 在需要导入广告的ViewController头文件中导入头文件并声明实例以及声明代理 #import <AdHubSDK/AdHubSDK.h> @interface AdHubBannerViewController ()<AdHubBannerViewDele

  • 我正在尝试使用Burstly为Android创建横幅,但出现以下错误: java.lang.RuntimeException:无法获取提供程序com.greystripe.android.sdk。AdContentProvider:java.lang.ClassNotFoundException:com.greystripe.android.sdk。加载程序dalvik.system.PathCl

  • 问题内容: 我正在我的android设备上测试adMob,并在获取说明文件之后,尝试获取执行adRequest的设备ID。但是,我无法在logCat中找到设备ID!我做错了什么? 编辑:这不是重复的,其他帖子中的那些方法对我不起作用。 问题答案: final TelephonyManager tm =(TelephonyManager)getBaseContext().getSystemServi