2010-07-02 44 views
6

Tôi có hai Chế độ xem. Một là một WebView và một là một ImageView. Tôi thiết lập các điều khiển tự động zoom cho WebView như vậy:Có cách nào để ẩn và hiển thị các điều khiển thu phóng trên WebView không?

webview.getSettings().setBuiltInZoomControls(true); 

Tôi chỉ cần thay đổi tầm nhìn của cả hai lần xem sử dụng GONEVisible. Trong khi thay đổi chế độ xem của tôi từ WebView sang ImageView, các điều khiển thu phóng không mất khả năng hiển thị của chúng trong một khoảng thời gian.

Có cách nào để ẩn và hiển thị Autozoomcontrols không?

Chỉnh sửa:

Tôi đã thử các phương pháp này nhưng vẫn không hoạt động.

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

Trả lời

-3

Tôi cho rằng điều này sẽ hiệu quả.

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

Bạn có thể có quan điểm bạn nhận được từ WebView.getZoomControls() và thêm nó như một đứa trẻ để bố trí bên cạnh (hoặc trên) webview. Thật không may là hacky, getZoomControls không được dùng nữa và bạn không bị thu phóng pinch, trừ khi bạn gọi WebSettings.setBuildInZoomControls (true) (điều này sẽ thêm chế độ xem điều khiển thu phóng SECOND mà bạn không muốn), nhưng có vẻ như nó hoạt động. Dưới đây là mã của tôi để làm điều này, cho những gì nó có giá trị:

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 (trong vòng một hoạt động):

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

Bây giờ để có zoom biến mất, bạn có thể đặt khả năng hiển thị của R.id.rl (có chứa WebView và FrameLayout chứa các hình ảnh thu phóng) đến RelativeLayout.GONE.

Đối với một giải pháp unhacky: nếu Api tối thiểu của bạn được thiết lập để mức 11 (đó là 3.0 Honeycomb, vì vậy không may này là khó xảy ra), bạn có thể sử dụng: 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(); 
    } 
} 
Các vấn đề liên quan