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.
- Error al inflar la vista de clase interna
- RemoteViews setLayoutParams?
- Cómo escuchar el botón de búsqueda del teclado en searchView
- Vista personalizada de Android onMease onDraw lifecycle
- ¿Cómo extender la vista de la disposición del cajón?
- Android obtiene la vista de Preferencia en PreferenciaActividad
- Android: View.setID (int id) de forma programática - ¿cómo evitar conflictos de ID?
- GridLayout empuja a sus hijos y desbordamiento cuando se le da fill_parent para la altura
- SearchView no obtener el foco
- Cómo posicionar elementos de menú en la vista de navegación?
- Obtener las dimensiones después de setLayoutParams en Android
- SetOnItemClickListener en ListView que afecta a varias filas
- Establecer una imagen de fondo en una vista extiende mi vista
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 .
- Mostrar HTML con formato de cadena
- No se puede escribir desde el teclado (hardware) en AVD (emulador) después de actualizar ADT