Android-макет с возможностью масштабирования в виджере с отступом влево и вправо - PullRequest
0 голосов
/ 09 октября 2018

У меня есть окно просмотра с левым и правым отступом для отображения предварительного просмотра левой и правой страниц окна просмотра.

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

Содержимое окна просмотра - это масштабирование, позаимствованное у здесь .Таким образом, проблема заключается в том, что всякий раз, когда я масштабирую макет из окна просмотра, единственный видимый зум находится сверху и снизу.Масштабирование не видно слева и справа из-за заполнения.

Снимок экрана до увеличения Normal View without zooming (pinch to zoom)

Снимок экрана после увеличения Pinch to zoom Pinch to zoom

Увеличенный вид ограничен внутри отступа видового экрана.Мне нужен вид для увеличения в полноэкранном режиме без каких-либо отступов или границ.

Это фрагменты кода, которые я пробовал

activity_reader.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>

each_page.xml

<?xml version="1.0" encoding="utf-8"?>

<com.test.poc.widgets.ZoomLayout
    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"
    android:id="@+id/zoom_layout">
    <RelativeLayout
        android:id="@+id/img_holder"
        android:transitionName="pager"
        android:background="#FFF"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/page_image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/a_four"
            android:layout_weight="1"
            android:scaleType="fitXY"
            />
    </RelativeLayout>
</com.test.poc.widgets.ZoomLayout>

После увеличения масштаба, когда я отпускаю палец, вид должен плавно перейти к полноэкранному пейджеру.

Попытка установки clipToPadding как false, но при масштабировании все еще существует одна сторона отступа

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Попробуй это, у меня сработало: 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);
    }
}}
0 голосов
/ 29 октября 2018

Вы пытались поместить zoomview рядом с viewpager в framelayout (не на каждой странице), чтобы оно находилось поверх viewpager.

...