angcyo / DslTabLayout

:hearts: Android界最万能的TabLayout(不仅仅是TabLayout), 支持任意类型的item, 支持Drawable类型的指示器,智能开启滚动,支持横竖向布局等
https://github.com/angcyo/DslAdapter
MIT License
1.55k stars 145 forks source link

onSelectViewChange中的fromView为什么没有跟随点击事件发生变化 #43

Closed chesonsir closed 3 years ago

chesonsir commented 3 years ago
onSelectViewChange = { fromView, selectViewList, _, _ ->
    // 改变字体粗细
    fromView.apply {
        findViewById<TextView>(R.id.classify_tag).typeface = Typeface.DEFAULT
    }
    selectViewList.first().apply {
        findViewById<TextView>(R.id.classify_tag).typeface = Typeface.DEFAULT_BOLD
    }
}

为什么fromView始终是第一项item,并没有跟随点击事件发生变化

angcyo commented 3 years ago

测试代码已提交, 没有出现你说的问题.

MainFragment.kt:60

onSelectViewChange = { fromView, selectViewList, reselect, fromUser ->
    val toView = selectViewList.first()
    L.i("fromView:${fromView.hashCode()} toView:${toView.hashCode()}")
}

日志输出如下:

[(MainFragment.kt#invoke#60 (MainFragment.kt:70)#invoke:main] fromView:0 toView:81484104
[(MainFragment.kt#invoke#60 (MainFragment.kt:70)#invoke:main] fromView:81484104 toView:32555508
[(MainFragment.kt#invoke#60 (MainFragment.kt:70)#invoke:main] fromView:32555508 toView:145779602
[(MainFragment.kt#invoke#60 (MainFragment.kt:70)#invoke:main] fromView:145779602 toView:81484104
[(MainFragment.kt#invoke#60 (MainFragment.kt:70)#invoke:main] fromView:81484104 toView:32555508
chesonsir commented 3 years ago

通过addView代码添加item会不会有影响

chesonsir commented 3 years ago

我的item的View是两个TextView组成的,通过addView动态添加item,设置tab_enable_text_bold没有效果,通过onSelectViewChange来改变item字体粗细,但是fromView始终指向第一个item,我打印的view的id是一样的

angcyo commented 3 years ago

通过addView代码添加item会不会有影响

动态添加item的demo在 DynamicActivity.kt:42, 没出现问题.,

angcyo commented 3 years ago

我的item的View是两个TextView组成的,通过addView动态添加item,设置tab_enable_text_bold没有效果,通过onSelectViewChange来改变item字体粗细,但是fromView始终指向第一个item,我打印的view的id是一样的

重写onGetTextStyleView方法, 获取操作目标的TextView.