2010-07-02 28 views
6

İki Görünümüm var. Biri bir WebView ve diğeri bir ImageView. Ben şöyle WebView'da için otomatik yakınlaştırma denetimlerini ayarlayın:WebView'de yakınlaştırma denetimlerini gizlemenin ve göstermenin bir yolu var mı?

webview.getSettings().setBuiltInZoomControls(true); 

Sadece GONE ve Visible kullanarak hem Görünümler görünürlüğünü değişiyorum. Görünümümü WebView'den ImageView'e değiştirirken, yakınlaştırma kontrolleri bir süre görünmezliklerini kaybetmez.

Otomatik Oda Denetimlerini gizlemek ve göstermek için herhangi bir yol var mı?

Düzenleme:

Ben bu yöntemleri denedi, ama yine de çalışmıyor.

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

cevap

-3

Bunun işe yarayacağını varsayalım.

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

Sen WebView.getZoomControls aldığım görünümü() almak ve yanında bir düzen bir çocuk olarak ekleyebilirsiniz (veya üstünde) Web görünümündeki. Ne yazık ki hacky, getZoomControls kullanımdan kaldırıldı ve WebSettings.setBuildInZoomControls (true) (istemediğiniz bir SECOND yakınlaştırma denetimleri görünümü ekleyecektir) aramadıkça, tutam yakınlaştırma elde edemezsiniz, ancak çalışır gibi görünüyor. İşte bu değer ne için bunu yapmak benim kod var:

Düzen 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 (bir aktivite içinde):

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

yakınlaştırma yok olması, ayarlayabileceğiniz RelativeLayout.GONE için R.id.rl (yakınlaştırma denetimlerini içeren WebView ve FrameLayout içeren) görünürlüğü. Bir unhacky çözüm için

: Minimum Api (3.0 Honeycomb, bu nedenle ne yazık ki bu mümkün değildir) seviyesinde 11 olarak ayarlanırsa, şunları kullanabilirsiniz: 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(); 
    } 
} 
İlgili konular