2010-07-02 87 views
6

我有两个意见。一个是WebView,另一个是ImageView。我设置自动缩放控件的网页视图,像这样:有没有办法隐藏和显示WebView上的缩放控件?

webview.getSettings().setBuiltInZoomControls(true); 

我只是改变使用GONEVisible这两种观点的知名度。将视图从WebView更改为ImageView时,缩放控件在某段时间内不会丢失其可见性。

是否有任何可能的方法来隐藏和显示Autozoomcontrols?

编辑︰

我试过这些方法,但它仍然无法正常工作。

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

回答

-3

我想这会工作。

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

您可以从WebView.getZoomControls()获取视图,并将其作为子视图添加到webview旁边(或顶端)的布局。不幸的是,它是hacky,getZoomControls已被弃用,并且除非调用WebSettings.setBuildInZoomControls(true)(它将添加第二个缩放控件视图,您不需要),否则您不会得到缩放缩放,但似乎可行。这里是我的代码要做到这一点,对于它的价值:

布局的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(活动内):

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

现在有变焦消失,你可以设置R.id.rl(包含WebView和包含缩放控件的FrameLayout)的可见性到RelativeLayout.GONE。

对于unhacky解决方案:如果您的最低API被设置为11级(这是3.0蜂巢,所以很遗憾,这是不可能的),你可以使用: 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(); 
    } 
} 
相关问题