Reutilización de diseños en el caso de un AppWidget

Tengo varios diseños muy similares para mi AppWidget , de hecho diferenciando solamente en la rotación de uno de los elementos de TextView (selecciono el diseño apropiado basado en la orientación de la pantalla).

Así que en lugar de repetir las mismas cosas varias veces (odio la repetición), pensé en tratar de arreglar las cosas con Re-using Layouts con <include/> .

El problema viene cuando estoy tratando de hacer referencia a elementos particulares del diseño por ID. Donde el elemento está en el diseño incluido xml, para las presentaciones no- AppLink, he utilizado un método descrito aquí , donde se utiliza un enfoque de dos niveles …

En el diseño "principal":

 <include layout="@layout/my_layout" android:id="@+id/textview_layout" /> 

En el código:

 TextView tv = (TextView)findViewById(R.id.textview_layout).findViewById(R.id.textview); tv.setText("test"); 

… donde el ID del TextView en el diseño "child" es textview . Por lo tanto, es un enfoque en dos etapas donde primero hace referencia a la View contiene el TextView que desea y, a continuación, referencia el TextView fuera de eso.

Pero para AppWidgets, en lugar de tratar directamente con TextView , tienes que hacer todo a través de RemoteViews .

Así que en lugar de:

 TextView textView = (TextView)findViewById(viewId); textView.setText("text"); 

Usted tendría que hacer:

 remoteViews.setTextViewText(viewId, "text"); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); 

Dado que la interfaz en las RemoteViews es pasar de una sola ID de vista (directa), ¿cómo haría referencia a un elemento en un archivo incluido?

Como dijiste, tu vista solo difiere con un cambio en la configuración. Teniendo en cuenta que usted está usando Android Studio, en la GUI Designing Tool Hay una opción llamada Ir al siguiente estado , mediante el uso de este puede generar el archivo de diseño de la tierra y configurarlo como desee, y también no tienes cambiar el id como android Decidir el diseño que va a utilizar, para que pueda acceder a su texto con el mismo id. Si desea acceder a cualquier vista que esté en la etiqueta de inclusión. Usted podría apenas utilizar el id que usted les ha dado. Espero que esto sea útil. Gracias

  • Diferencia entre android: inputType = "textPassword", "textVisiblePassword", "textWebPassword" y "numberPassword" en android?
  • Cómo establecer la altura de filas ListView
  • Horizontalmente desplazables tabulaciones dentro de un fragmento en una actividad
  • Enfoque de la petición EditText
  • Android Range SeekBar
  • Vista personalizada dentro de HorizontalScrollView sin desplazamiento
  • Android: uso de view.setX () y setY en api 8
  • Cómo crear para mi aplicación Android un tutorial para el usuario en la primera instalación
  • Programe el ancho del botón de forma programada en 50% de los padres LinearLayout
  • Hacer vistas de la misma altura en LinearLayout cuando todas son wrap_content
  • ¿Por qué se envuelve el contenido en la línea múltiple TextView fill parent?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.