我已经看到“马里奥”动态壁纸在设置屏幕中使用了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/

10-09 05:04