Adición de TextViews al widget de pantalla de inicio mediante programación

Quiero agregar controles de vistas de texto mediante programación a mi widget de pantalla de inicio. En el ejemplo siguiente, ocupo Linearlayout con TextViews, pero ¿cómo debo usar RemoteViews aquí? Sólo acepta la disposición de recursos xml como un parámetro.

public class MyWidget extends AppWidgetProvider { public void onUpdate(Context _context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { LinearLayout l = new LinearLayout(_context); for (int i = 0; i < 10; i++) { TextView t = new TextView(_context); t.setText("Hello"); l.addView(t); } } } 

Todos los tutoriales que vi explícitamente poblar objeto RemoteViews con valores para sus controles predefinidos. Y quiero agregar controles programmaticaly.

 RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget); views.setTextViewText(R.id.widget_control1, value1); views.setTextViewText(R.id.widget_control2, value2); 

Tropezamos con esta pregunta en la búsqueda de mi propia respuesta, y mientras esto no responde a mi pregunta me imaginé que respondería a esta pregunta.

Suponiendo que ya tiene un archivo de diseño para su widget, test.xml .

Ahora, cree un nuevo diseño, guarde p. text_view_layout.xml . text_view_layout.xml . En ese layout xml tenemos esto como su contenido:

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:textAppearance="?android:attr/textAppearanceLarge" /> 

Ahora acaba de crear un diseño con su vista de raíz que es una vista de texto.

Ahora en su código puede agregar texto a esta vista de texto, así:

 RemoteViews update = new RemoteViews(getPackageName(), R.layout.test); for(int i = 0; i < 3; i++) { RemoteViews textView = new RemoteViews(getPackageName(), R.layout.text_view_layout); textView.setTextViewText(R.id.textView1, "TextView number " + String.valueOf(i)); update.addView(R.id.linearLayout1, textView); } mAppWidgetManager.updateAppWidget(mAppWidgetId, update); 

Ahora usted acaba de crear tres textViews todos con el texto que es "TextView número 0" y así sucesivamente …

Estoy seguro de que hay una respuesta similar en otro lugar, pero esta es la forma de agregar textViews mediante programación a un appWidget.

API de RemoteViews

Ok, es imposible para appwidgets. Sólo se aceptan los recursos xml.

Usted podría intentar esto

 LinearLayout l = new LinearLayout(_context); for (int i = 0; i < 10; i++) { TextView t = new TextView(this); t.setText("Hello"); t.setBackgroundColor(Color.RED); t.setSingleLine(true); l.addView(t); } l.setId(100) RemoteViews views = new RemoteViews(context.getPackageName(),100); views.setTextViewText(R.id.widget_control1, value1); views.setTextViewText(R.id.widget_control2, value2); 
  • ¿Cómo llamar a un servicio remoto Android (IPC) desde un servicio Widget / local?
  • SetImageViewBitmap no funciona en el widget android
  • Cómo cargar imágenes de la URL en el widget de la aplicación Android?
  • Cómo configurar RecyclerView en el widget android
  • ¿Qué es exactamente un widget?
  • Cómo encontrar el continente en una ubicación determinada usando Geocoder en la aplicación android
  • ¿Hay alguna manera de poner un campo EditText / entrada en un widget homescreen?
  • ¿Cómo mostrar un diálogo en un widget?
  • Picasso: cargar imágenes en widget listview
  • Android - widget de actualización sobre el servicio con datos de la red. ¿El mejor enfoque?
  • ¿Cómo puedo hacer que un buscador Android se mueva sin problemas?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.