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 我使用了这个依赖项
注意:- 没有嵌套滚动视图,它会完美工作,但我想要滚动视图。
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 }
}
您可以使用以下代码启用 pdf 滚动
binding.pdfView.fromStream(it).enableSwipe(true).load()