studio programacion herramientas fundamentos con avanzado aplicaciones android webview show-hide fragment

programacion - Android: mostrar/ocultar fragmento deja un área vacía



manual de android en pdf (1)

Un mes después descubrí cómo hacerlo. Resulta que simplemente ocultar el fragmento no es suficiente, básicamente necesito ocultar / mostrar el caparazón que contiene el fragmento. Sigue siendo el LinearLayout que originalmente se definió en XML. De hecho, es suficiente para establecer la visibilidad en ese diseño original para mostrar / ocultar el fragmento. Entonces el código de la pregunta ahora se ve así:

public void onJobViewToggled(final boolean isWebView) { if (isFinishing()) return; final Fragment scroll = getSupportFragmentManager().findFragmentById(R.id.scrollFragment); if (scroll.isHidden() == isWebView) return; // already handled, do nothing final FragmentTransaction tr = getSupportFragmentManager().beginTransaction(); if (scroll != null && scroll.isAdded()) { if (isWebView) { tr.hide(scroll); // shell is the original placeholder shell.setVisibility(View.GONE); } else { tr.show(scroll); shell.setVisibility(View.VISIBLE); } } tr.commit(); }

Tenga en cuenta que aún desea mostrar / ocultar el fragmento para que esto funcione

Dado:

  1. Dos elementos colocados verticalmente en la pantalla (ViewPager y Fragment)
  2. La acción en el primer fragmento seleccionado actualmente (ViewFlipper) alterna entre la vista basada en texto y la vista basada en WebView en el fragmento superior y oculta / muestra el fragmento inferior.

Observado:

  1. Ocultando el fragmento inferior deja un espacio vacío donde se encuentra el fragmento inferior.

Intenté tanto Relative como LinearLayout (con el fragmento superior configurado en weight=1 ) pero ambos no tienen efecto después de eliminar el fragmento inferior. Aún tengo espacio vacío en la parte inferior.

Aquí está el archivo de diseño de nivel superior:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1"/> <!-- This gets replaced with appropriate fragment at run time --> <LinearLayout android:id="@+id/scrollFragmentPlaceholder" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="110dip" /> </LinearLayout>

Aquí hay un código que alterna el fragmento

Fragment scroll = getSupportFragmentManager().findFragmentById(R.id.scrollFragment); if (scroll.isHidden() == isWebView) return; // already handled, do nothing FragmentTransaction tr = getSupportFragmentManager().beginTransaction(); if (scroll != null && scroll.isAdded()) { if (isWebView) { tr.hide(scroll); } else tr.show(scroll); } tr.commit();

Y así es como se ve: