Некорректное отображение фрагментов с каждым добавленным фрагментом, последний фрагмент перемещается в сторону - PullRequest
0 голосов
/ 21 сентября 2019

Я делаю браузер.Для основы возьмите Viewpager и FragmentStatePagerAdapter.Когда добавляется новый фрагмент, он сдвигает последний фрагмент в сторону или на экране появляется уже сдвинутый элемент.

[1] http://prnt.sc/p912dn [1]

[2] http://prnt.sc/p912u1 [2]

[3] http://prnt.sc/p912x5 [3]

Я не нашел подобных проблем.

override fun getItem(position: Int): Fragment = listOpenTabs[position].fragment

override fun getCount(): Int {
    return listOpenTabs.size
}

private var listOpenTabs = mutableListOf<TabsModel>()

fun removeAt(position: Int) {
    onClickCloseTab(listOpenTabs[position])
}

fun setData(list: MutableList<TabsModel>) {
    listOpenTabs = list
}

// Custom Viewpager

private var swipeable: Boolean = false конструктор (context: Context): super (context)

constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
    this.swipeable = true
}

@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(event: MotionEvent): Boolean {
    return if (this.swipeable) {
        super.onTouchEvent(event)
    } else false
}

override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
    return if (this.swipeable) {
        super.onInterceptTouchEvent(event)
    } else false
}

fun setSwipeable(swipeable: Boolean) {
    this.swipeable = swipeable
}

// Activity В действии я использовал этот метод для масштабного viewpager иоткрытые вкладки

    if (dm2!!.widthPixels - viewPager.width < 5) {
        viewPager.pageMargin = 40
        llayoutviewpage.gravity = CENTER_IN_PARENT
        val pvhX = PropertyValuesHolder.ofFloat("scaleX", 1f, 0.8f)
        val pvhY = PropertyValuesHolder.ofFloat("scaleY", 1f, 0.8f)
        val scale = ObjectAnimator.ofPropertyValuesHolder(viewPager, pvhX, pvhY)
        scale.duration = 100
        scale.start()
        val Rlparam =
            RelativeLayout.LayoutParams(dm2!!.widthPixels * 8 / 10, dm2!!.heightPixels * 8 / 10)
        Rlparam.addRule(CENTER_IN_PARENT)
        llayoutviewpage.layoutParams = Rlparam
        viewPager.setSwipeable(true)
        nav_bar.visibility = View.GONE
        addTab.visibility = View.VISIBLE
        viewPager.currentItem = viewPager.currentItem
    } else {
        viewPager.pageMargin = 0
        llayoutviewpage.gravity = CENTER_IN_PARENT
        val pvhX = PropertyValuesHolder.ofFloat("scaleX", 0.8f, 1f)
        val pvhY = PropertyValuesHolder.ofFloat("scaleY", 0.8f, 1f)
        val scale = ObjectAnimator.ofPropertyValuesHolder(viewPager, pvhX, pvhY)
        scale.duration = 100
        scale.start()
        val Rlparam2 = RelativeLayout.LayoutParams(dm2!!.widthPixels, dm2!!.heightPixels)
        Rlparam2.addRule(CENTER_IN_PARENT)
        llayoutviewpage.layoutParams = Rlparam2
        viewPager.setSwipeable(false)
        nav_bar.visibility = View.VISIBLE
        addTab.visibility = View.GONE
        viewPager.currentItem = viewPager.currentItem
    }
...