View.onMeasure () no se llama

Tengo una vista personalizada muy simple con onMeasure() overriden. Mi onMeasure() decide el tamaño de acuerdo con el fondo Drawable. Cuando la Vista se crea por primera vez desde xml, todo funciona normalmente. Pero entonces fijé un diverso fondo programatically, así que la visión debe volver a clasificar según el tamaño. La Vista tiene ahora un fondo diferente, pero no onMeasure() tamaño y onMeasure() no se llama.

He intentado todo – requestLayout() , forceLayout() , invalidate() , setLayoutParams() – sin ningún efecto. ¿Qué estoy haciendo mal? Sólo quiero que mi vista cambie el tamaño.

El problema era que yo estaba llamando a setBackground () dentro de mi View onSizeChanged (). He refactorizado el código y funciona ahora.

¿Ha intentado lo obvio, es decir, cómo se declara su método?

Si no agregó la anotación @override , agregue, y vea si su compilador le dice que no está anulando nada. Si es así, compruebe el nombre y la firma del método de onMeasure .

De lo contrario, asegúrese de entender cuando se supone que el método measure() se llama: Cómo Android dibuja vistas .

  • Cómo hacer que SearchView pierda el foco y se contraiga al hacer clic en otra parte de la actividad
  • ¿Cómo crear un semicírculo transparente?
  • Obtener referencias a las vistas en mi actividad de Android
  • Diseño de Android con visibilidad GONE
  • Android hacer desaparecer la vista haciendo clic fuera de ella
  • Efectos del acolchado negativo
  • Superposición de vista de aplicación de Android (HUD)
  • Android: Obtiene el elemento listview del botón que se hace clic en la vista de lista personalizada
  • OnSuggestionClick recrea mi actividad
  • El cajón de navegación es lento con vista compleja
  • Android: Elementos de interfaz de usuario sobre capa de lienzo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.