android - programacion - ¿Hay alguna manera de ocultar y mostrar los controles de zoom en un WebView?
manual de android en pdf (3)
Supongo que esto funcionará.
webView.getSettings().setUseWideViewPort(true);
Tengo dos Vistas. Uno es un WebView y el otro es un ImageView. Establecí los controles de zoom automático para WebView de esta manera:
webview.getSettings().setBuiltInZoomControls(true);
Solo estoy cambiando la visibilidad de ambas Vistas usando 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 forma de ocultar y mostrar Autozoomcontrols?
Editar:
Intenté estos métodos, pero todavía no funciona.
webview.getZoomControls().setVisibility(View.GONE);
webview.getZoomControls().invalidate();
Puede tomar la vista que obtiene de WebView.getZoomControls () y agregarla como elemento secundario a un diseño junto a (o en la parte superior) de la vista web. Desafortunadamente es hacky, getZoomControls está en desuso, y no obtienes zoom de pellizco a menos que llames a WebSettings.setBuildInZoomControls (true) (que agregará una SEGUNDA vista de controles de zoom, que no deseas), pero parece funcionar. Aquí está mi código para hacer esto, por lo que vale:
Layout xml:
<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 para que desaparezca el zoom, 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 desagradable: si su Api mínima está configurada en el nivel 11 (que es 3.0 Honeycomb, por lo que desafortunadamente esto es poco probable), puede usar: http://developer.android.com/reference/android/webkit/WebSettings.html #setDisplayZoomControls (booleano)
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();
}
}