views:

54

answers:

2

I am creating a appwidget that consists of a single custom view called Foo.

xml/widget.xml:

<appwidget-provider
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:minWidth="294dp"
 android:minHeight="72dp"
 android:updatePeriodMillis="0"
 android:initialLayout="@layout/widget_layout">
</appwidget-provider>

layout/widget_layout

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <package.name.Foo
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 />
</LinearLayout>

Foo:

  public class Foo extends View 
  {..}

I tested the Foo view in a normal android app, and it works perfectly. However, when I try to run the widget I get "error while loading widget". When I remove the Foo view from the widget, everything is fine. So it has something to do with the Foo view.

Unfortunately I can't get any more specific errors in DDMS, cause I don't know of a way to debug widgets.

I would like to know if it is indeed possible to use your own custom views in a app-widget? Am I doing something wrong here?

A: 

You cannot have ANY custom view used in widget. In fact, even those android-predfined views are not all supported.

For detailed list of supported widgets/layouts, please read the documentation. Anything other than those documented cannot be placed in widgets.

xandy
Wow, that sucks... Why on earth did they do that?
Peterdk
Let me guess, since for widget, you (as widget developer) don't own the process/thread that render the widget, indeed, the home screen / launcher owns and renders it. Such limitation applies to prevent FC or poorly programmed widget kills the home screen app.
xandy
A: 

Hi Peterdk, see the documentation.

AnalogClock, Button, Chronometer, ImageButton, ImageView, ProgressBar and TextView are the supported views. For layouts you have to use FrameLayout, LinearLayout or RelativeLayout.

hpe
Indeed, and subclasses of those (even your own) are NOT supported.
Peterdk