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.
- Widget de Android que no se actualiza - tiene una ID de widget incorrecta
- Actualizar Android ListView en Widget
- El widget de búsqueda no está funcionando en el release apk
- Obtener el identificador de diseño de cadena, no funcionará
- Hacer un bucle a través de todos los "widgets" / elementos de una actividad
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget); views.setTextViewText(R.id.widget_control1, value1); views.setTextViewText(R.id.widget_control2, value2);
- ¿Por qué utilizar DialogFragment?
- ¿Cómo agregar un botón a las notificaciones en android?
- Widget de Android que parece exactamente un icono de lanzador
- Widget de control de energía mostrado durante un breve momento al actualizar mi propio widget a través de AppWidgetManager, ¿cuál es el problema?
- ¿Hay alguna forma de que los elementos de la interfaz de usuario se superpongan ligeramente (uno encima del otro) sin usar diseños absolutos?
- El widget de Android no puede recibir el mensaje DATE_CHANGED
- Ejemplo de Google Search Like Widget
- Android widget ¿cómo puede obtener el tiempo en hora y minuto de esto?
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);
- No se puede crear tabla TEMP en Android sqlite
- Anulación de androide: elipse en el subtítulo ActionBar