【发布时间】:2019-08-29 03:36:24
【问题描述】:
我正在努力解决如何在我的标签上实现长按。我尝试了一些不同的方法,但似乎都不起作用。
我确信它可能是基本的,或者我根本不理解 tablayout 和寻呼机的点击。
我在这里发现了一些问题,但它们并不是指长按。
这是我尝试过的一些事情。
main_tab_pager.iterator().forEach {
view ->
view.setOnLongClickListener{
Toast.makeText(applicationContext, "....", Toast.LENGTH_LONG).show()
true
}
main_tabs.setOnLongClickListener {
when(main_tabs.selectedTabPosition) {
0-> Toast.makeText(applicationContext, "tab 0", Toast.LENGTH_LONG).show()
1-> Toast.makeText(applicationContext, "tab 1", Toast.LENGTH_LONG).show()
2-> Toast.makeText(applicationContext, "tab 2", Toast.LENGTH_LONG).show()
}
true
}
main_tab_pager.setOnLongClickListener {
when(main_tab_pager.currentItem) {
0-> Toast.makeText(applicationContext, "tab 0", Toast.LENGTH_LONG).show()
1-> Toast.makeText(applicationContext, "tab 1", Toast.LENGTH_LONG).show()
2-> Toast.makeText(applicationContext, "tab 2", Toast.LENGTH_LONG).show()
}
true
}
选项卡/寻呼机设置代码。
main_tab_pager.adapter = TabAdapter(supportFragmentManager, sections)
main_tabs.setupWithViewPager(main_tab_pager)
标签适配器
class TabAdapter(fragmentManager: FragmentManager, private val sections:
Array<BaseFragment>) : FragmentPagerAdapter(fragmentManager)
{
override fun getItem(position: Int): Fragment {
return sections[position]
}
override fun getCount(): Int {
return sections.size
}
override fun getPageTitle(position: Int): CharSequence? {
return sections[position].title
}
}
【问题讨论】:
-
也许这会有所帮助 -> stackoverflow.com/a/6050655/2751783
-
既然你在做
setupWithViewPager(),唯一的方法(不修改TabLayout)是手动遍历标签Views,并设置OnLongClickListeneron每一个。但是,那些Views 不是TabLayout的直接子代。它们嵌套在另一个View中,因此您必须遍历TabLayout的第一个孩子的孩子。 -
@MikeM。好的,那很好,但是我该怎么做呢?我似乎能够使用 main_tabs[0] 或 getchildat(0) 来获取孩子,但它似乎没有生成一个视图组来迭代。
-
您必须将其转换为
ViewGroup。 -
谢谢@MikeM。我想通了。
标签: android kotlin android-tablayout