2012-05-26 13 views
10

Ist es möglich, die Zoomtasten enter image description here zu entfernen? Es wird angezeigt, wenn ich das WebView zoome. Ich brauche eine Zoomsteuerung ohne diese Tasten. Ich benutze Android 2.3.So entfernen Sie die Zoom-Schaltflächen in der Android-Webansicht?

I unten Code verwendet,

WebView webview = (WebView) findViewById(R.id.webview); 
webview.getSettings().setBuiltInZoomControls(false); 
webview.getSettings().setJavaScriptEnabled(true); 
FrameLayout mContentView = (FrameLayout) getWindow(). 
     getDecorView().findViewById(android.R.id.content); 
final View zoom = webview.getZoomControls(); 
mContentView.addView(zoom, ZOOM_PARAMS); 
zoom.setVisibility(View.GONE); 
+0

können wir diskutieren hier http://chat.stackoverflow.com/rooms/10629/agarwal –

+0

Ja sicher. Ich werde beitreten. – bharath

+0

@bharath können Sie mir helfen fr [dies] (http://stackoverflow.com/questions/11777116/enable-zoom-for-all-pages-of-android-application) –

Antwort

5

Schließlich ist meine Antwort, es ist nicht möglich, diese Schaltfläche auf WebView in Android 2.3 zu verstecken/entfernen. Hier

21
getSettings().setBuiltInZoomControls(false); 

die obige Codezeile verwenden, um die Zoom-Tasten zu entfernen.

Auf API> = 11, können Sie:

webView.getSettings().setBuiltInZoomControls(true); 
webView.getSettings().setDisplayZoomControls(false); 

Aktualisiert ::: Wenn Sie haben Zoom wollen/heraus ohne Zoom-Steuerelemente verwenden Sie dann den folgenden Code (kopiert von here)

public class Main extends Activity { 
  private WebView myWebView; 
  private static final FrameLayout.LayoutParams ZOOM_PARAMS = 
new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 
ViewGroup.LayoutParams.WRAP_CONTENT, 
Gravity.BOTTOM); 

  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 
    myWebView = (WebView)findViewById(R.id.webView); 

    FrameLayout mContentView = (FrameLayout) getWindow(). 
    getDecorView().findViewById(android.R.id.content); 
    final View zoom = myWebView.getZoomControls(); 
    mContentView.addView(zoom, ZOOM_PARAMS); 
    zoom.setVisibility(View.GONE); 

    myWebView.loadUrl("http://www.almondmendoza.com"); 
  } 
} 
3

Folgen Sie diesem Code. Es wird dir helfen.

Main.java

WebView wv = (WebView) findViewById(R.id.webview1) ; 
    WebSettings webSettings = wv.getSettings(); 
    webSettings.setBuiltInZoomControls(false); 
    wv.loadUrl(url); 
+0

Bestenfalls würde dies * ermöglichen * die Zoomsteuerung. – CommonsWare

+0

Booleschen Wert in false ändern –

0

ist eine Lösung:

if (ev.getAction() == MotionEvent.ACTION_DOWN || 
     ev.getAction() == MotionEvent.ACTION_POINTER_DOWN || 
     ev.getAction() == MotionEvent.ACTION_POINTER_1_DOWN || 
     ev.getAction() == MotionEvent.ACTION_POINTER_2_DOWN || 
     ev.getAction() == MotionEvent.ACTION_POINTER_3_DOWN) { 
    if (multiTouchZoom && !buttonsZoom) { 
     if (ev.getPointerCount() > 1) { 
      getSettings().setBuiltInZoomControls(true); 
      getSettings().setSupportZoom(true); 
     } else { 
      getSettings().setBuiltInZoomControls(false); 
      getSettings().setSupportZoom(false); 
     } 
    } 
} 

if (!multiTouchZoom && buttonsZoom) { 
    if (getPointerCount(ev) > 1) { 
     return true; 
    } 
} 

In Ihrem Fall multiTouchZoom wahr ist und buttonsZoom ist falsch.

Ich fand es hier enable/disable zoom in Android WebView und es hat für mich gearbeitet.

+0

Was sind MultiTouchZoom und buttonsZoom-Variablen? – jayellos

+0

@jayellos ersetzen sie mit Ihren booleschen Werten. Wenn Sie Multitouch-Zoom verwenden möchten, ersetzen Sie 'multiTouchZoom' durch true. Wenn Sie Zoom-Schaltflächen anzeigen müssen, ersetzen Sie 'buttonsZoom' durch true. Andernfalls ersetzen Sie mit false. –

+0

wird diese Lösung funktionieren http://StackOverflow.com/a/11901948/998732 – jayellos

7

Ändern Sie diese auf Ihrem AndroidManifest:

android:minSdkVersion="8" 

dazu:

android:minSdkVersion="11" 

als diese Ansicht Einstellungen in Ihrem Web verwenden:

getSettings().setBuiltInZoomControls(true); 
    getSettings().setDisplayZoomControls(false); 
1

einfach diese Zeile hinzu:

webSettings.setDisplayZoomControls(false); 
+0

Der Typ fragte nach Android 2.3, das ist nicht möglich mit 2.3 – VSG24

1

Zoom-Schaltflächen können entfernt werden, indem Sie Ihr eigenes benutzerdefiniertes Webview implementieren und Reflektionen verwenden, um die integrierten Zoomsteuerelemente zu erhalten und sie für API unter 11 (Honeycomb) unsichtbar zu machen. Der Code ist so wie für alle APIs bis Android Nougat funktioniert;

public class CustomWebView extends WebView{ 

    private ZoomButtonsController zoom_controll = null; 

    public CustomWebView(Context context) { 
     this(context, null); 
    } 

    public CustomWebView(Context context, AttributeSet attrs) { 
     this(context, attrs, android.R.attr.webViewStyle); 
    } 

    public CustomWebView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     initWebSettings(); 
    } 

    @SuppressLint("NewApi") 
    private void initWebSettings() { 
     WebSettings webSettings = getSettings(); 

     webSettings.setSupportZoom(true); 
     webSettings.setBuiltInZoomControls(true); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
      webSettings.setAllowContentAccess(true); 
      webSettings.setDisplayZoomControls(false); 

     } else { 
      try { 
       Class webview = Class.forName("android.webkit.WebView"); 
       Method method = webview.getMethod("getZoomButtonsController"); 
       zoom_controll = (ZoomButtonsController) method.invoke(this, null); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 


    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if(zoom_controll != null) 
      zoom_controll.getZoomControls().setVisibility(View.GONE); 
     return super.onTouchEvent(event); 
    } 

} 
1

Wenn Sie nur die Zoomfunktion zu deaktivieren, verwenden Sie diese: webView.getSettings().setDisplayZoomControls(false);

Verwandte Themen