2011-06-12 17 views
5

Estoy creando programáticamente una vista en tiempo de ejecución y quiero que esta vista se agregue dinámicamente a mi linearlayout en tiempo de ejecución. Aquí está el código que obtuve:Añadiendo dinámicamente una Vista a un widget de Android

public class Widget extends AppWidgetProvider { 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 
     RemoteViews updateViews = new RemoteViews(context.getPackageName(), 
       R.layout.main); 

     DemoView dv = new DemoView(context); 

      // Stuck here...How do I add my new dv View to my android widget 

     appWidgetManager.updateAppWidget(appWidgetIds, updateViews); 
     super.onUpdate(context, appWidgetManager, appWidgetIds); 
    } 


    private class DemoView extends View { 
     public DemoView(Context context) { 
      super(context); 


     } 

     @Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 

      Paint LedColor = new Paint(); 
      Paint BlankColor = new Paint(); 
      Path p,p1; 
      Matrix m = new Matrix(); 

      LedColor.setStyle(Paint.Style.FILL); 
      LedColor.setColor(0xffffffff); 

      BlankColor.setStyle(Paint.Style.FILL); 
      BlankColor.setColor(0xff111111); 

      DigitPaths dp = new DigitPaths(); 

      p = dp.GetDigitPath(-1); 
      p1 = dp.GetDigitPath(5); 

      p.offset(50, 50); 
      p1.offset(50, 50); 

      m.setScale(6.5f, 6.5f); 
      p.transform(m); 
      p1.transform(m); 
      canvas.drawPath(p,BlankColor); 
      canvas.drawPath(p1, LedColor); 
     } 
    } 
} 

¡Cualquier ayuda sería apreciada!

Respuesta

5

No es posible agregar un View personalizado a un widget de aplicación. Consulte the "Creating the App Widget Layout" section de la Guía del desarrollador de aplicaciones Widgets para saber qué tipos de View están permitidos.

Android 3.0 agrega compatibilidad con algunas vistas para mostrar colecciones. Vea la sección the "Using App Widgets with Collections" para más detalles.

De lo contrario, para añadir dinámicamente un permitidas View a una aplicación de widgets, después de inflar el RemoteViews y obtener una referencia a él, puede utilizar su método addView(View), o el método addView(View) en cualquiera de los View objetos que ya están en el RemoteViews.

2

Como Bruce contestó correctamente, no es posible usar una vista personalizada. Como parece que su vista no responde a la entrada, y solo dibuja, puede lograr la misma funcionalidad con un ImageView. Simplemente cree un mapa de bits, cree un lienzo con él, y luego dibuje sobre él usando el código de su dibujo en blanco. Luego, cree un ImageView (que está permitido en un widget) y configure la imagen que muestra en su Bitmap.

Cuestiones relacionadas