Android 在活动开始时使AdView具有固定大小
是否有一种方法可以强制AdView在活动开始时立即获取其初始大小并保持在该固定大小。正如现在一样,它在加载广告时会发生变化,这意味着在启动活动时会调用两次my Renders onsurfaceChanged函数,这会导致一些初始化在两次之后运行 我可以解决这个问题,但如果有一个简单的方法来为通胀大旗指定一个固定的大小,这将非常容易。我不希望硬编码横幅大小的dip值。我的AdView由以下xml初始化:Android 在活动开始时使AdView具有固定大小,android,xml,adview,Android,Xml,Adview,是否有一种方法可以强制AdView在活动开始时立即获取其初始大小并保持在该固定大小。正如现在一样,它在加载广告时会发生变化,这意味着在启动活动时会调用两次my Renders onsurfaceChanged函数,这会导致一些初始化在两次之后运行 我可以解决这个问题,但如果有一个简单的方法来为通胀大旗指定一个固定的大小,这将非常容易。我不希望硬编码横幅大小的dip值。我的AdView由以下xml初始化: <com.google.ads.AdView android:
<com.google.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="unit_id"
ads:loadAdOnCreate="true"
ads:testDevices="device_id"
android:visibility="visible" >
</com.google.ads.AdView>
设备/单元ID明显改变,以保护无辜者(me)可根据充气动态设置高度和宽度,从而解决您的问题
adView.setLayoutParams(new LinearLayout.LayoutParams(width, height)); //Change LinearLayout to something else if your adview is in another layout
经过一番胡闹,我找到了自己的答案。它避免了硬编码的值,并允许我纯粹用xml创建AdView。以下提供给感兴趣的任何人: 我创建了AdView的这个子类:
public class MyAdView extends AdView {
public MyAdView(Activity activity, AdSize adSize, String adUnitId) {
super(activity, adSize, adUnitId);
// TODO Auto-generated constructor stub
}
public MyAdView(Activity activity, AdSize[] adSizes, String adUnitId) {
super(activity, adSizes, adUnitId);
// TODO Auto-generated constructor stub
}
public MyAdView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MyAdView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec){
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Context ctx=getContext();
AdSize testSize=AdSize.createAdSize(AdSize.SMART_BANNER, ctx); //Need to do this because the final static variable SMART_BANNER has buggy behaviour and returns a negative size if you don't.
int height=testSize.getHeightInPixels(ctx);
int width=testSize.getWidthInPixels(ctx);
setMeasuredDimension(width, height);
}
}
并将xml视图更改为(ID再次更改):
在我的布局中包括这个,我现在可以为我的AdView获得一个固定的大小,而不需要任何代码。AdView现在是最后一个类了
<packagename.MyAdView
android:id="@id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="unitId"
ads:loadAdOnCreate="true"
ads:testDevices="deviceId"
android:visibility="visible" >
</packagename.MyAdView>