先上效果图:
首先这个界面背景透明,所以我们肯定需要在一个弹窗中嵌套ViewPager进行操作,先自定义一个DialogFragment:
class TestDialogFragment : DialogFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return LayoutInflater.from(context).inflate(R.layout.layout_test, container, false) } fun show(manager: FragmentManager?) { show(manager, this::class.java.simpleName) } companion object { fun newInstance(): TestDialogFragment { return TestDialogFragment() } } }
然后我们确定页面布局,上方是一个ViewPager,下方是一个指示栏加上一个关闭按钮,并且ViewPager与指示栏有部分重合,为了快速实现指示栏效果,我使用了开源项目MagicIndicator:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false" android:orientation="vertical"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="@dimen/dp_100" android:background="@color/color_ff3a455e" android:orientation="horizontal" android:layout_alignParentBottom="true"> <net.lucode.hackware.magicindicator.MagicIndicator android:id="@+id/reportDetailIndicator" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_16" android:layout_weight="1" /> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/ivClose" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginEnd="@dimen/dp_16" android:src="@drawable/ic_delete" /> </androidx.appcompat.widget.LinearLayoutCompat> <androidx.viewpager.widget.ViewPager android:id="@+id/reportDetailViewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="40dp" android:layout_marginRight=&#