2010-07-02 61 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(); 
    } 
} 
相關問題