2011-01-28 9 views
12

Qual è la differenza tra getHeight() e getLayoutParams().height di un View? Ho un View (GoogleAdView) e voglio nasconderlo, ho impostato getLayoutParams().height a zero ma l'altezza dell'annuncio (ad.getHeight()) non è zero.getHeight() vs getLayoutParams(). Altezza

C'è un modo per nascondere View in modo che non occupi spazio nel layout?

Ho provato a impostare la sua visibilità su GONE oa impostare ad.getLayoutParams().height su zero ma questo non funziona.

risposta

18

LayoutParams.height è l'altezza che si desiderio la visualizzazione avrete una volta strutturato e potrebbe essere destinata a costanti particolari come wrap_content, getHeight() restituisce l'altezza effettiva (restituisce 0 fino a quando la vista non è disposto). Vedi How Android Draws Views e View - Size, padding and margins.

Come ha detto Michael, è necessario chiamare requestLayout().

4

Il modo corretto per nascondere una vista e ignorarlo nei layout è quello di utilizzare

setVisibility(View.GONE); 

Se questo non funziona per voi, è necessario scoprire perché. Cercare di modificare le dimensioni non è un buon percorso.

In caso di problemi con il layout, inseriscilo qui.

+2

il mio problema è che se faccio con setVisibility (View.GONE), lo spazio era era annuncio rimane non occupato e il layout non si ridimensiona. Ho provato con ad.refreshDrawableState(); ma ancora il layout non viene ridimensionato ... –

+0

refreshDrawableState() non aiuterà. Hai chiamato refreshLayout() dopo aver nascosto la vista? – Michael

+0

il mio oggetto di layout (LinearLayout) non ha questo metodo (refreshLayout()). –

Problemi correlati