Viewpager中的Android缩放缩放布局,左侧和右侧填充

时间:2018-10-08 21:02:44

标签: android android-viewpager zoom scale pinchzoom

我有一个viewpager,带有左右两边的空白,用于显示viewpager左右页面的预览。

    server {

    location /myapp/ {
        root   /opt/myapp/htdocs;
        index  index.php;
        location ~ \.php$ {
                #root           html;
                fastcgi_pass   127.0.0.1:9071;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
    }
}

viewpager的内容是从here借用的缩放布局。 因此,问题是,每当我从viewpager缩放布局时,唯一可见的缩放位于顶部和底部。由于填充,左右缩放不可见。

缩放前的屏幕截图 Normal View without zooming (pinch to zoom)

缩放后的屏幕截图 Pinch to zoom Pinch to zoom

缩放视图仅限于viewpager填充内。我需要视图全屏缩放,没有任何填充或边界。

这些是我正在尝试的代码段

activity_reader.xml

viewPager.setPadding(30,0,30,0);

each_page.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ViewPager
        android:id="@+id/reader_pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#000"/>
</FrameLayout>

缩放视图后,松开手指时,视图应平滑移动到全屏viewpager。

尝试将clipToPadding设置为false,但是在缩放时填充的一侧仍然存在

2 个答案:

答案 0 :(得分:0)

您尝试将zoomview放置在framelayout中(而不是在每个页面中)在viewpager旁边,因此它位于viewpager的顶部。

答案 1 :(得分:0)

尝试一下,它对我有用:https://gist.github.com/atermenji/3781644

public class ImageZoomViewPager extends ViewPager {

public ImageZoomViewPager(Context context) {
    super(context);
}

public ImageZoomViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
    if (v instanceof ImageViewTouch) {
        return ((ImageViewTouch) v).canScroll(dx);
    } else {
        return super.canScroll(v, checkV, dx, x, y);
    }
}}