Que constructor a ser llamado para ver?

Tengo mi vista personalizada ampliada desde View . Hay 3 constructores de vista:

  1. View(Context context, AttributeSet attrs, int defStyle)
  2. View(Context context, AttributeSet attrs)
  3. View(Context context)

De mi actividad llamo std.setContentView(R.layout.main) . El segundo constructor se llama en mi opinión. ¿Por qué el segundo? ¿Cómo saber de antemano cuál será llamado y por qué?

Desde el sitio de desarrolladores de Android en la documentación de View:

public View (Context context)

Constructor simple a utilizar al crear una vista desde el código.

Así que este constructor es lo que puede utilizar para crear una vista en Java. No se llamará cuando infle de XML.

public View (Context context, AttributeSet attrs)

Constructor que se llama al inflar una vista desde XML. Esto se llama cuando se está construyendo una vista desde un archivo XML, proporcionando atributos que se especificaron en el archivo XML. Esta versión utiliza un estilo predeterminado de 0, por lo que los únicos valores de atributo aplicados son aquellos en el Tema del Contexto y el atributo especificado.

El método onFinishInflate () se llamará después de haber agregado todos los niños.

Por lo tanto, este constructor se llamará cuando infle una Vista desde XML cuando no especifique un estilo.

public View (Context context, AttributeSet attrs, int defStyle)

Realice la inflación de XML y aplique un estilo de base específico de clase. Este constructor de Vista permite que las subclases utilicen su propio estilo de base cuando se infla. Por ejemplo, el constructor de una clase Button llamaría a esta versión del constructor de clase super y suministraría R.attr.buttonStyle para defStyle; Esto permite que el estilo del botón del tema modifique todos los atributos de la vista base (en particular su fondo), así como los atributos de la clase Button.

Debe implementar todos estos constructores, pero puede poner todo el trabajo en el tercero llamando this(context, null) y this(context, attrs, 0) para los dos primeros, respectivamente.

  • Appcompatv7 - v21 El cajón de navegación no muestra el icono de hamburguesa
  • ¿Añada el efecto de la ondulación a mi botón con color de fondo del botón?
  • Colocar la vista dentro de FrameLayout en Android
  • La actividad debe ser transparente, pero tiene fondo negro
  • ImageView que toma demasiado espacio vertical
  • Android Studio 2.2 Vista previa 1 Problemas de renderizado
  • El título de la barra de herramientas desaparece al agregar vistas
  • Diferencia entre android: layout_alignParentTop y android: layout_alignParentStart
  • Cómo asignar el relleno a la línea de divisor de elementos Listview
  • Horizontalmente desplazamiento Grid Lists?
  • Dos TextViews lado a lado, sólo uno para ellipsizar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.