2010-08-29 20 views
8

declaré una actividad WebView en el manifiesto de esta manera:Cómo mostrar una vista web con estilo Theme.Dialog en Android

<activity android:name=".MyWebView" 
    android:label="@string/app_name" 
    android:configChanges="orientation|keyboardHidden" 
    android:theme="@android:style/Theme.Dialog"> 
</activity> 

El WebView se ve así:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <WebView android:id="@+id/webview" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
    /> 
</LinearLayout> 

Cuando inicio esta actividad dentro de mi actividad principal, solo el título del diálogo, que contiene el nombre de la aplicación, es visible, pero no el WebView. Si agrego un TextView a LinearLayout, también se muestra, pero todavía falta WebView. Si no aplico android:theme="@android:style/Theme.Dialog" en el manifiesto, se muestra WebView.

¿Por qué es así y cómo puedo mostrar un WebView en un cuadro de diálogo?

Respuesta

23

Encontré que funciona si cambia la vista web a wrap_content en lugar de fill_parent. No tengo idea por qué. Probablemente sea un error.

+0

Agradable, funciona para mí. :) Tarda tiempo hasta que se muestre WebView (por lo tanto, al principio solo aparece el título), pero tal vez agregue un progreso infinito mientras se carga el sitio web. – Manuel

+0

sí, parece un error para mí también, wrap_content está bien. –

+0

funcionó para mí también :) ¡Gracias! –

0

Creo que lo que está haciendo funcionaría. Tal vez intente anular la clase de diálogo en lugar de la clase de actividad.

+0

No lo hago funcionar, de cualquier manera. ¿Podría dar un ejemplo de trabajo? – Manuel

0

Utilice WebView como diseño raíz, sin ningún elemento circundante. No sé por qué no funcionó con el diseño circundante.

3

La mejor manera que he encontrado es un pequeño truco como esto:

Aviso del 1000dp para minWidth y minHeight

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:minWidth="1000dp" 
      android:minHeight="1000dp" > 

    <WebView android:id="@+id/web_view" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" /> 

</LinearLayout> 

La otra manera es envolver el contenido de la vista Web, pero no lo puedo expande hasta que cargues una página web ... así comenzará pequeña, luego expandir. Este camino hackeará hará que el gran diálogo comience.

Cuestiones relacionadas