Android dialogFragment "a veces" no muestra la vista web

Tengo un DialogFragment con un WebView dentro de él. Si la vista web no carga la página lo suficientemente rápido, el DialogFragment se reducirá por completo y no mostrará la vista web. De lo contrario, si la carga fue rápida, se muestra el WebView.

Encontré la solución por mí mismo. Si utiliza LinearLayout como la vista raíz de DialogFragment esto sucederá, cambiarlo a FrameLayout resolvió el problema. No entiendo por qué, pero funciona.

En mi caso, he utilizado WebView personalizado como ExpandableHeightWebView para la altura dinámica.

 @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (isExpanded()) { int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); ViewGroup.LayoutParams params = getLayoutParams(); params.height = getMeasuredHeight(); } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } 

Estoy llamando a setExpanded(true); Después de myWebView.loadData(data,null);
Este problema resuelto cuando setExpanded(true); línea.

Si puede cargar la vista web a través de AsyncTaks el fragmento de diálogo no se muestra porque AsyncTasks no puede cambiar el diseño que está en el subproceso principal. Mira esto.

Lo intenté en dos dispositivos.

En el primer dispositivo Nexus 6 funcionó como decir David "He encontrado la solución por mí mismo.Si utiliza LinearLayout como la vista de la raíz de su DialogFragment esto sucederá, cambiarlo a FrameLayout resuelto el problema.No entiendo por qué, pero funciona" . Pero lo intenté en el segundo dispositivo (Galaxy Prime) y la sorpresa, no funcionó. Después de intentar hacer setVisible GONE WebView en mi WebViewClient dentro callback onPageStarted() y después de setVisible VISIBLE dentro callback onPageFinished() y trabajó para mi.

 public class MyWebClient extends WebViewClient { private static final String LOG_CAT = "NetPayWebClient"; @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Log.e(LOG_CAT, "onPageStarted(): " + url); view.setVisibility(View.GONE); super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { Log.e(LOG_CAT, "onPageFinished(): " + url); view.setVisibility(View.VISIBLE); super.onPageFinished(view, url); } } 
  • Proxy androide de WebView
  • Android WebView deja espacio para la barra de desplazamiento
  • ¿Se puede usar la API de PostMessage para comunicarse con un WebView de Android?
  • Documentación del puente JavaScript de WebView
  • Las funcionalidades de JQuery no funcionan cuando carga los datos html de una cadena en webview
  • M_mainFrame-> editor () -> hasComposition no emitir
  • ¿Cuál es la diferencia entre Html.escapeHtml y TextUtils.htmlEncode de Android? ¿Cuándo debo usar uno u otro?
  • Detectar memoria disponible dentro de un WebView
  • WebView.zoomIn () no funciona antes de mostrar la representación
  • Obtener la altura del texto incluyendo el tamaño de fuente y establecer esa altura
  • Trabajar con archivos ePub en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.