studio programacion herramientas fundamentos con avanzado aplicaciones android webview zoom

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(); } }