2010-07-02 17 views
6

Tengo dos vistas. Uno es un WebView y el otro es un ImageView. Me puse los controles de zoom automático para la vista Web, así:¿Hay alguna manera de ocultar y mostrar los controles de zoom en un WebView?

webview.getSettings().setBuiltInZoomControls(true); 

sólo estoy cambiando la visibilidad de ambos Vistas utilizando GONE y Visible. Al cambiar mi Vista de WebView a ImageView, los controles de zoom no pierden su visibilidad durante un período de tiempo.

¿Hay alguna manera posible de ocultar y mostrar los autozoomcontroles?

Editar:

me trataron estos métodos, pero todavía no está funcionando.

webview.getZoomControls().setVisibility(View.GONE); 
webview.getZoomControls().invalidate(); 

Respuesta

-3

Supongo que esto funcionará.

webView.getSettings().setUseWideViewPort(true); 
0

Usted puede tomar la vista que se obtiene de WebView.getZoomControls() y agregarlo como un niño a un diseño al lado (o encima de) la vista web. Desafortunadamente es hacky, getZoomControls está en desuso, y no obtienes zoom pellizco a menos que llames a WebSettings.setBuildInZoomControls (true) (que agregará una SEGUNDA vista de controles de zoom, que no quieres), pero parece funcionar. Aquí está mi código para hacer esto, por lo que vale la pena: xml

Diseño:

<RelativeLayout android:id="@+id/rl" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

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

    <FrameLayout android:id="@+id/wv_zoom_fl" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentBottom="true" /> 

</RelativeLayout> 

Java (dentro de una actividad):

WebView wv = (WebView)findViewById(R.id.wv); 
FrameLayout zoomfl = (FrameLayout)findViewById(R.id.wv_zoom_fl); 
zoomfl.removeAllViews(); 
zoomfl.addView(wv.getZoomControls()); 

Ahora tener el zoom desaparecer, se puede establecer la visibilidad de R.id.rl (que contiene WebView y FrameLayout que contiene las reglas de zoom) en RelativeLayout.GONE.

Para una solución unhacky: si su Api mínimo se establece en el nivel 11 (que es 3.0 Honeycomb, por lo que lamentablemente esto es poco probable), que puede utilizar: http://developer.android.com/reference/android/webkit/WebSettings.html#setDisplayZoomControls(boolean)

3
public void setZoomControlGone(View view){ 
    Class<?> classType; 
    Field field; 
    try { 
     classType = WebView.class; 
     field = classType.getDeclaredField("mZoomButtonsController"); 
     field.setAccessible(true); 
     ZoomButtonsController mZoomButtonsController = new ZoomButtonsController(view); 
     mZoomButtonsController.getZoomControls().setVisibility(View.GONE); 
     try { 
      field.set(view, mZoomButtonsController); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
     } 
    } catch (SecurityException e) { 
     e.printStackTrace(); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } 
} 
Cuestiones relacionadas