¿Cómo establecer el tamaño y el diseño en onSizeChanged?

No puedo obtener mis elementos, por ejemploListView, para cambiar el tamaño correctamente.

Recibí unaListActivity para buscar, con un tablero, un cuadro de edición y una vista de lista. La idea es ocultar la barra de acción mientras se muestra el teclado.

ExtendíLinearLayout, para escuchar los cambios en el tamaño de la vista (como se recomiendaaqu):

public class SizeChangingLinearLayout extends LinearLayout {
    //...
    @Override
    protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld)
    {        
        View actionbar = mainView.findViewById(R.id.actionbar);

        if (yNew > yOld) 
            actionbar.setVisibility(View.VISIBLE);
        else if (yNew < yOld) 
            actionbar.setVisibility(View.GONE);

        super.onSizeChanged(xNew, yNew, xOld, yOld);

    }
}

La ocultación / visualización de la barra de acción funciona como se esperaba, pero hay un espacio debajo de laListView de la misma altura que la barra de acción oculta. Tan pronto como cambie un gráfico (por ejemplo, escribir en el cuadro de edición), laListView llena el vacío. Un comportamiento similar aparece a la inversa, al ocultar el teclado.

[Editar

El mismo problema también aparece al cambiar otro diseño. CambiandoVisibility de cosas enonSizeChanged se muestra directamente, pero el cambio de tamaños y márgenes no se muestra hasta que alguna otra acción del usuario vuelve a dibujar esas vistas. La invalidación no funciona desdeonSizeChanged.

[/Editar

He intentado actualizar los gráficos:

invalidate -ing tanto el LinearLayout personalizado como elListView (como se recomiendaaqu)notifyDataSetChanged en el adaptador de la listaforceLayout

... y más, sin éxito. Porque es elListView no cambiar el tamaño al principio? ¿Tengo que anularonLayout en mi LinearLayout extendido? ¿Qué me he perdido?

Respuestas a la pregunta(4)

Su respuesta a la pregunta