在嵌套滚动视图中如何滚动 pdf 视图

问题描述 投票:0回答:1

enter code here
我的根布局是嵌套滚动视图内的嵌套滚动视图创建viewpager以从左到右或从右到左更改pdf,它可以正常工作,但是当向上滚动pdf以更改pdf视图时,则无法正常工作。

我想要什么:- 我想当单击下一个和上一个箭头时更改 pdf,当向上滚动时更改 pdf 内容

我的代码流程就像(kotlin):- (1)在设计中创建单项设计我采用了barteksc pdf视图。 (2)为pdf视图创建Adapter类、模型类 (3)在viewpager中设置adapter

barteksc:android-pdf-viewer:2.8.2 我使用了这个依赖项

注意:- 没有嵌套滚动视图,它会完美工作,但我想要滚动视图。

谢谢。enter image description here

activity_main.xml

<androidx.core.widget.NestedScrollView 
        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="wrap_content"
        android:background="@color/listing_background"
         android:id="@+id/scrolview_parrent"
        tools:context=".view.activity.ListingActivity">

      <LinearLayout
        android:id="@+id/linear_viewing_area"
        android:layout_width="match_parent"
        android:layout_height="@dimen/_180sdp"
        android:layout_below="@id/linear_export_excel"
        android:orientation="vertical"
        android:layout_marginBottom="@dimen/_15sdp"
        android:background="@drawable/viewing_area_bg"
        android:layout_marginStart="@dimen/_10sdp"
        android:layout_marginEnd="@dimen/_10sdp"
        android:padding="@dimen/_5sdp"
        android:visibility="visible"
        android:layout_marginTop="@dimen/_15sdp">

      
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/pdf_view_bg">

            <androidx.viewpager.widget.ViewPager
                android:nestedScrollingEnabled="false"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/viewpager_for_pdf_listing"
                android:layout_centerInParent="true"
                android:clipToPadding="false"
                android:foregroundGravity="center" />


            <ImageView
                android:id="@+id/img_next_listing"
                android:layout_width="@dimen/_40sdp"
                android:layout_height="35dp"
                android:src="@drawable/fws"
                android:layout_marginEnd="@dimen/_100sdp"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                android:layout_marginRight="5dp"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                />


            <ImageView
                android:id="@+id/img_previous_listing"
                android:layout_width="@dimen/_40sdp"
                android:layout_height="35dp"
                android:src="@drawable/back"
                android:layout_centerVertical="true"
                android:layout_marginStart="@dimen/_100sdp"
                android:layout_alignParentLeft="true"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"/>
        </RelativeLayout>
    </LinearLayout>
   </androidx.core.widget.NestedScrollView>

单项设计 xml。

enter code here
    <RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:background="@color/pdf_view_bg"
   android:layout_height="match_parent">

<com.github.barteksc.pdfviewer.PDFView
    android:id="@+id/pdfview"
    android:nestedScrollingEnabled="false"
    android:layout_width="@dimen/_189sdp"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"
    android:layout_marginTop="@dimen/_15sdp"
    android:layout_marginBottom="@dimen/_15sdp"
    android:padding="@dimen/_5sdp" />

适配器类

enter code here
        class PdfAdapter(private val context: Context, private val pdfList: ArrayList<PdfModel>) :
PagerAdapter() {
override fun getCount(): Int {

    return pdfList.size

}

override fun isViewFromObject(view: View, `object`: Any): Boolean {
    return view == `object`
}


override fun instantiateItem(container: ViewGroup, position: Int): Any {

    val view = LayoutInflater.from(context)
        .inflate(R.layout.single_row_design_for_pdfview, container, false)

    val model = pdfList[position]
    val pdfview = model.pdf

    //set datato ui view
    view.pdfview.fromStream(pdfview).load()
    view.pdfview.isNestedScrollingEnabled
    container.addView(view, position)
    return view
}


override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
    container.removeView(`object` as View)
}
}

主要活动类

enter code here
    private fun loadPdf() {
    pdfModel = ArrayList()

    pdfModel.add(PdfModel(assets.open("AI1.pdf")))
    pdfModel.add(PdfModel(assets.open("AI2.pdf")))
    pdfModel.add(PdfModel(assets.open("AI3.pdf")))

    // setup adapter
    pdfAdapter = PdfAdapter(this, pdfModel)

    //set adapter to viewpager
    viewpager_for_pdf_listing.adapter = pdfAdapter

    // set default padding

    viewpager_for_pdf_listing.setPadding(60, 0, 60, 0)

    //disable view pager swipe.
    //only swipe when click buttun
    viewpager_for_pdf_listing.setOnTouchListener { v, event -> true }
    
}
android android-viewpager android-nestedscrollview pdf-viewer
1个回答
0
投票

您可以使用以下代码启用 pdf 滚动

binding.pdfView.fromStream(it).enableSwipe(true).load()

© www.soinside.com 2019 - 2024. All rights reserved.