Android: AppWidget con la vista personalizada no funciona
Estoy creando un appwidget que consiste en una sola vista personalizada llamada Foo.
xml / widget.xml:
- RemoteViewsFactory llamado getViewAt cuando el dataset vacío
- Cambiar el color de fondo de ActionBarSherlock de forma programática
- Android establecer límites para una capa de capa de dibujar
- Ejemplo de uso de pestañas de Android con Vistas en lugar de Actividades?
- Eraser en Android
<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 {..}
He probado la vista de Foo
en una aplicación normal de Android, y funciona perfectamente. Sin embargo, cuando intento ejecutar el widget me sale "error while loading widget"
. Cuando quito la vista de Foo
del widget, todo está bien. Así que tiene algo que ver con la vista Foo
.
Lamentablemente no puedo obtener más errores específicos en DDMS, porque no sé de una manera de depurar widgets.
Me gustaría saber si es posible usar sus propias vistas personalizadas en un widget de aplicación. ¿Estoy haciendo algo mal aquí?
- sombra lista de android
- Android - Carousel como widget que muestra una parte de los elementos izquierdo y derecho
- Android.widget, textView no se puede convertir en android.widget, botón
- Cómo hacer que el código de espera hasta que una animación termina en android?
- Pintura a mano libre no funciona correctamente?
- Obtención de coordenadas de clics en Android ListView OnItemClickListener
- Cómo personalizar el ancho y la altura cuando se muestra una actividad como un cuadro de diálogo
- ¿Cómo configurar AutoCompleteTextView desplegable fondo transparente en Android?
Casi dejé mi vista personalizada intacta, e implementé un ImageView para mi widget, luego procesé la vista usando el método getDrawingCache ()
MyView myView = new MyView(context); myView.measure(150,150); myView.layout(0,0,150,150); myView.setDrawingCacheEnabled(true); Bitmap bitmap=myView.getDrawingCache(); remoteViews.setImageViewBitmap(R.id.dial, bitmap);
Otra forma de hacerlo sin utilizar getDrawingCache()
:
MyView myView = new MyView(this); myView.measure(500, 500); myView.layout(0, 0, 500, 500); Bitmap bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888); myView.draw(new Canvas(bitmap)); remoteViews.setImageViewBitmap(R.id.imageView, bitmap);
Utilicé caché para no volver a dibujar toda la vista así que no podría utilizar el código arriba. Y lo encuentro más elegante. Espero que pueda ser útil para alguien.
consulte la documentación .
AnalogClock, Button, Cronómetro, ImageButton, ImageView, ProgressBar y TextView son las vistas compatibles. Para diseños, debe utilizar FrameLayout, LinearLayout o RelativeLayout.
No se puede tener ninguna vista personalizada utilizada en el widget. De hecho, ni siquiera las vistas predeterminadas de Android están soportadas.
Para obtener una lista detallada de widgets / diseños compatibles, lea la documentación . Cualquier otra cosa que no sea la documentada no se puede colocar en widgets.