2012-05-26 19 views
10

ズームボタンenter image description hereを取り外すことはできますか? WebViewをズームしたときの表示。私はこれらのボタンなしでズームコントロールが必要です。私はアンドロイド2.3を使用しています。Androidのwebviewでズームボタンを削除するにはどうすればよいですか?

Iズームボタンを削除するために上記のコード行を使用

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

を私たちがここで議論することができhttp://chat.stackoverflow.com/rooms/10629/agarwal –

+0

うん確認してください。参加します。 – bharath

+0

@bharathは私を助けることができますfr [this](http://stackoverflow.com/questions/11777116/enable-zoom-for-all-pages-of-an-android-application) –

答えて

5

最後に私の答えは、Android 2.3でWebViewにこれらのボタンのを削除/非表示にそのことはできません、です。ここで

21
getSettings().setBuiltInZoomControls(false); 

、コードの下に使用されます。 API> = 11で

、あなたが使用することができます。

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

更新:::あなたはズームコントロールなし/アウトでズームを持っているしたい場合は、(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

このコードに従ってください。それはあなたを助けるでしょう。

Main.java

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

最高で、これは*有効になります*ズームコントロール。 – CommonsWare

+0

ブール値をfalseに変更する –

0

は、ソリューションです:あなたのケースでは

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; 
    } 
} 

multiTouchZoomが真であるとbuttonsZoomがfalseです。

私はそれがここに見つかりましたenable/disable zoom in Android WebViewと私のために働いています。

+0

multiTouchZoomおよびbuttonsZoom変数は何ですか? – jayellos

+0

@ jayellosはそれらをブール値で置き換えます。マルチタッチズームが必要な場合は、 'multiTouchZoom'をtrueに置き換えてください。ズームボタンを表示する必要がある場合は、 'buttonsZoom'をtrueに置き換えてください。それ以外の場合は、falseに置き換えます。 –

+0

このソリューションは動作しますhttp://stackoverflow.com/a/11901948/998732 – jayellos

7

変更これはあなたのAndroidManifest上:

android:minSdkVersion="11" 

あなたのWebビューの設定でこれを使用するよりも:これまで

android:minSdkVersion="8" 

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

ただ、この行を追加します。

webSettings.setDisplayZoomControls(false); 
+0

人はAndroid 2.3について尋ねましたが、これは2.3では不可能です – VSG24

1

独自のカスタムWebビューを実装し、リフレクションを使用してズームコントロールを組み込み、11(Honeycomb)以下のAPIで非表示にすることで、ズームボタンを削除できます。このコードは、android nougatまでのすべてのAPIで同様に動作します。

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

あなただけのズームコントロールは、この使用を無効にしたい場合: webView.getSettings().setDisplayZoomControls(false);

関連する問題