有没有一种方法可以在 WebView 上隐藏和显示缩放控件?

6

我有两个视图,一个是WebView,另一个是ImageView。我为WebView设置了自动缩放控件,如下所示:

webview.getSettings().setBuiltInZoomControls(true);

我只是使用GONEVisible来改变两个视图的可见性。当我从WebView更改到ImageView时,缩放控件在一段时间内不会失去它们的可见性。

是否有可能隐藏和显示自动缩放控件?

编辑:

我尝试了这些方法,但仍然没有效果。

webview.getZoomControls().setVisibility(View.GONE);
webview.getZoomControls().invalidate();
3个回答

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

0

您可以使用WebView.getZoomControls()获取视图,并将其作为子项添加到布局旁边(或在其上方)。不幸的是,这种方法有些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());

现在要让缩放消失,您可以将包含WebView和包含缩放控件的FrameLayout的R.id.rl的可见性设置为RelativeLayout.GONE。

对于一个非hacky的解决方案:如果您的最小Api设置为11级(这是3.0 Honeycomb,所以不幸的是这很少见),您可以使用: http://developer.android.com/reference/android/webkit/WebSettings.html#setDisplayZoomControls(boolean)


-3

我想这个会起作用。

webView.getSettings().setUseWideViewPort(true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接