我已经看到“马里奥”动态壁纸在设置屏幕中使用了admob广告,但我自己却做不到。如果像使用常规布局一样将adview放入settings.xml中,则会收到类强制转换异常。
这是马里奥动态壁纸的屏幕截图,用来说明我正在尝试做的事情。
最佳答案
这是一个更简单的解决方案:创建一个显示单个广告的新的首选项类型。然后,您可以在xml定义中包括该偏好设置类型,以显示一个或多个广告。
自定义首选项类别:
public class AdmobPreference extends Preference
{
public AdmobPreference(Context context) {
super(context, null);
}
public AdmobPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected View onCreateView(ViewGroup parent) {
//override here to return the admob ad instead of a regular preference display
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return inflater.inflate(R.layout.admob_preference, null);
}
}
AdmobPreference的XML布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res/<YOUR PACKAGE>"
android:layout_width="fill_parent" android:layout_height="fill_parent"
>
<com.google.ads.AdView android:id="@+id/ad" android:layout_width="fill_parent"
android:layout_height="wrap_content" myapp:backgroundColor="#000000" myapp:primaryTextColor="#FFFFFF"
myapp:secondaryTextColor="#CCCCCC" />
</LinearLayout>
然后,您只需将以下内容添加到首选项xml定义中:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:orderingFromXml="true">
<YOUR PACKAGE NAME.AdmobPreference android:key="ad" />
... other preferences ...
</PreferenceScreen>
关于android - 如何在动态壁纸的设置屏幕中放置admob adview?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4003701/