Android Kotlin:长按标签页的监听器

时间:2019-08-28 16:49:27

标签: android kotlin android-tablayout

我正在为如何在标签上实施长按而苦苦挣扎。我尝试了几种不同的方法,但似乎都没有效果。

我确信这可能是基本的东西,或者我只是不了解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
    }
}

1 个答案:

答案 0 :(得分:0)

解决方案,感谢Mike M。

   val tabs = main_tabs.getChildAt(0) as LinearLayout

    for (i in 0 until tabs.childCount) {
        when(i){
            0 -> tabs.getChildAt(0).setOnLongClickListener {
                Toast.makeText(baseContext, "tab 0 ", Toast.LENGTH_LONG).show()
                true
            }
            1 -> tabs.getChildAt(1).setOnLongClickListener {
                Toast.makeText(baseContext, "tab 1", Toast.LENGTH_LONG).show()
                true
            }
            2 -> tabs.getChildAt(2).setOnLongClickListener {
                Toast.makeText(baseContext, "tab 2", Toast.LENGTH_LONG).show()
                true
            }
        }
    }