2011-01-28 8 views
12

¿Cuál es la diferencia entre getHeight() y getLayoutParams().height de View? Tengo un View (GoogleAdView) y quiero ocultarlo, configuro getLayoutParams().height a cero, pero la altura del anuncio (ad.getHeight()) no es cero.getHeight() vs getLayoutParams(). Height

¿Hay alguna manera de ocultar el View para que no ocupe espacio en el diseño?

He intentado establecer su visibilidad en GONE o establecer ad.getLayoutParams().height en cero, pero esto no funciona.

Respuesta

18

LayoutParams.height es la altura que deseo su punto de vista habrá una vez distribuida y podría fijarse a las constantes particulares como WRAP_CONTENT, getHeight() devuelve la altura real (devuelve 0 hasta que la vista no se presenta). Ver How Android Draws Views y View - Size, padding and margins.

Como dijo Michael, tienes que llamar requestLayout().

4

La forma correcta para ocultar una vista e ignorarlo en los diseños es el uso de

setVisibility(View.GONE); 

Si esto no funciona para usted, usted tiene que averiguar por qué. Tratar de modificar los tamaños no es un buen camino.

Si tiene problemas con su diseño, publíquelo aquí.

+2

mi problema es que si lo hago con setVisibility (View.GONE), el espacio donde el anuncio permanece desocupado y el diseño no se redimensiona. Lo he intentado con ad.refreshDrawableState(); pero aún así el diseño no cambia de tamaño ... –

+0

refreshDrawableState() no ayudará. ¿Llamaste a refreshLayout() después de ocultar la vista? – Michael

+0

mi objeto de diseño (LinearLayout) no tiene este método (refreshLayout()). –