2010-07-02 12 views
6

मेरे पास दो दृश्य हैं। एक वेबव्यू है और दूसरा एक छवि दृश्य है। मैं तो जैसे WebView के लिए स्वत: ज़ूम नियंत्रण स्थापित:क्या वेबव्यू पर ज़ूम नियंत्रण छुपाने और दिखाने का कोई तरीका है?

webview.getSettings().setBuiltInZoomControls(true); 

मैं सिर्फ दोनों GONE और Visible का उपयोग कर दृश्य की दृश्यता बदल रहा हूँ। WebView से ImageView में अपना दृश्य बदलते समय, ज़ूम नियंत्रण कुछ समय के लिए अपनी दृश्यता खोना नहीं है।

क्या Autozoomcontrols को छिपाने और दिखाने का कोई संभावित तरीका है?

संपादित करें:

मैं इन तरीकों की कोशिश की, लेकिन यह अभी भी काम नहीं कर रहा।

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

उत्तर

-3

मुझे लगता है कि यह काम करेगा।

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

आप दृश्य आपको WebView.getZoomControls से मिलता है() लेने के लिए और बगल में एक लेआउट के लिए एक बच्चे के रूप में जोड़ सकते हैं (या के शीर्ष पर) वेबव्यू। दुर्भाग्यवश यह हैकी है, 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> 

जावा (एक गतिविधि के भीतर):

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 की दृश्यता (जिसमें वेबव्यू और ज़ूम कंसोल युक्त फ़्रेमलाउट शामिल है) RelativeLayout.GONE पर।

एक unhacky समाधान के लिए: अपने न्यूनतम एपीआई स्तर 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(); 
    } 
} 
संबंधित मुद्दे