Android开AdMob的横幅高度出现时横幅、现时、高度、Android

2023-09-08 15:50:18 作者:゛ 肆言虐心

我添加了AdMob的横幅挂在我的应用程序成功。当旗帜看来我需要得到它的高度,以调整所有布局元素。我使用的情况下onReceivedAd,这是正确解雇。然而,alturaBanner是= 0,那么,如何得到它的高度?谢谢你。

  / **收到广告时调用。 * /
    @覆盖
    公共无效onReceiveAd(广告广告)
    {
        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_TAGonReceiveAd);
      Toast.makeText(这一点,onReceiveAd,Toast.LENGTH_SHORT).show();
    }
 

解决方案

获得之前,它是prepared总是会把你返回0视图的高度。 使用下一个code,以获得其正确的大小,无论你有何种设备/屏幕:

 私有静态无效runJustBeforeBeingDrawn(最终视图中查看,最终可运行可运行)
{
    最终ViewTreeObserver VTO = view.getViewTreeObserver();
    最终在preDrawListener preDrawListener =新在preDrawListener()
    {
        @覆盖
        在preDraw公共布尔()
        {
            runnable.run();
            最终ViewTreeObserver VTO = view.getViewTreeObserver();
            vto.removeOn preDrawListener(本);
            返回true;
        }
    };
    vto.addOn preDrawListener(preDrawListener);
}
 

在给定的可运行的,可以查询视图的实际大小。

另外,你可以用它代替插件preDrawListener addOnGlobalLayoutListener如果你想。

另一种方法是使用onWindowFocusChanged(并检查hasFocus ==真),但是这并不总是最好的方法(仅使用简单的观点创造,而不是动态的创造)

Android遭遇成长的烦恼

I am adding an adMob banner to my app successfully. When banner appears I need to get its height in order to resize all layout elements. I am using the event onReceivedAd, that is properly fired. However, alturaBanner is = 0. Then, how to get its height? thank you.

   /** 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();
    }

解决方案

getting the height of the view before it was prepared will always return you 0 . use the next code in order to get its correct size , no matter which device/screen you have:

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);
}

inside the given runnable , you can query the real size of the view.

alternatively , you can use addOnGlobalLayoutListener instead of addOnPreDrawListener if you wish.

another approach is to use onWindowFocusChanged (and check that hasFocus==true) , but that's not always the best way ( only use for simple views-creation, not for dynamic creations)