【问题标题】:Reverse swiping direction in ViewPager在 ViewPager 中反向滑动方向
【发布时间】:2018-09-23 18:23:17
【问题描述】:

有没有什么方法可以改变从左向右滑动的片段? 我的片段从右向左滑动,但我需要片段从左向右滑动。

寻呼机适配器.kt

class pageradapter (fm: FragmentManager) : FragmentStatePagerAdapter(fm){
override fun getItem(position: Int): Fragment {
    when(position){
        0-> return fragment1()
        1-> return fragment2()
        else-> return fragment3()
    }
}

override fun getCount(): Int {
    return 3
}

fragment1.kt // 2和3代码相同

class fragment1 : Fragment() {


override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment1, container, false)
}

Main4Activity.kt

class Main4Activity : AppCompatActivity(){

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main4)

    val adapter = pageradapter(supportFragmentManager)
    val pager = findViewById<View>(R.id.pager) as ViewPager
    pager.adapter = adapter

}

【问题讨论】:

    标签: android android-studio android-fragments kotlin android-viewpager


    【解决方案1】:

    你应该像下面这样颠倒Fragment的位置:

    在 PagerAdapter.kt 中

    class pageradapter (fm: FragmentManager) : FragmentStatePagerAdapter(fm){
         override fun getItem(position: Int): Fragment {
             when(rotatePosition(position)) {
                 0-> return fragment1()
                 1-> return fragment2()
                 else-> return fragment3()
             }
         }
    
        override fun getCount(): Int {
            return 3
        }
    
        private fun rotatePosition(position: Int): Int {
            return (getCount() - 1) - position
        }
    }
    

    在 Main4Activity

    class Main4Activity : AppCompatActivity(){
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main4)
    
            val adapter = pageradapter(supportFragmentManager)
            val pager = findViewById<View>(R.id.pager) as ViewPager
            pager.adapter = adapter
            // setting new start position
            pager.setCurrentItem(adapter.rotatePosition(0), false);
    
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 PageTransformer 对其进行动画处理

      或者,

      如果你想要替换片段的动画,你可以在FragmentTransaction上设置自定义动画

      【讨论】:

        猜你喜欢
        • 2014-09-03
        • 2015-12-03
        • 1970-01-01
        • 1970-01-01
        • 2013-11-05
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多