Switch to ViewPager2
This commit is contained in:
parent
7d8d6a7334
commit
0141a42cc2
4 changed files with 23 additions and 18 deletions
|
|
@ -41,7 +41,7 @@ class HomeActivity : AppCompatActivity() {
|
|||
binding = DataBindingUtil.setContentView(this, R.layout.activity_home)
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
tabController = TabController(supportFragmentManager, binding.pager, binding.tabs)
|
||||
tabController = TabController(this, binding.pager, binding.tabs)
|
||||
binding.drawerNav.setNavigationItemSelectedListener { onMenuItemSelected(it.itemId) }
|
||||
binding.navigationBtn.setOnClickListener { binding.drawerLayout.open() }
|
||||
binding.settingsBtn.setOnClickListener { showSettings() }
|
||||
|
|
|
|||
|
|
@ -8,32 +8,34 @@
|
|||
|
||||
package com.gaurav.avnc.ui.home
|
||||
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentPagerAdapter
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.gaurav.avnc.R
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
|
||||
/**
|
||||
* Controls tabs and associated pager in home activity.
|
||||
*/
|
||||
class TabController(val fragMgr: FragmentManager, private val pager: ViewPager, tabLayout: TabLayout) {
|
||||
class TabController(val activity: HomeActivity, private val pager: ViewPager2, tabLayout: TabLayout) {
|
||||
|
||||
private data class PageInfo(
|
||||
val fragment: Fragment,
|
||||
val tabIconId: Int,
|
||||
@DrawableRes val iconId: Int,
|
||||
@StringRes val descriptionId: Int
|
||||
)
|
||||
|
||||
private val pageList = listOf(
|
||||
PageInfo(ServersFragment(), R.drawable.ic_computer),
|
||||
PageInfo(DiscoveryFragment(), R.drawable.ic_search),
|
||||
PageInfo(ServersFragment(), R.drawable.ic_computer, R.string.desc_saved_servers_tab),
|
||||
PageInfo(DiscoveryFragment(), R.drawable.ic_search, R.string.desc_discovered_servers_tab),
|
||||
)
|
||||
|
||||
private inner class PagerAdapter : FragmentPagerAdapter(fragMgr, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
|
||||
override fun getCount() = pageList.size
|
||||
override fun getItem(position: Int) = pageList[position].fragment
|
||||
private inner class PagerAdapter : FragmentStateAdapter(activity) {
|
||||
override fun getItemCount() = pageList.size
|
||||
override fun createFragment(position: Int) = pageList[position].fragment
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -42,12 +44,13 @@ class TabController(val fragMgr: FragmentManager, private val pager: ViewPager,
|
|||
init {
|
||||
pager.adapter = PagerAdapter()
|
||||
|
||||
tabLayout.setupWithViewPager(pager)
|
||||
discoveryTab = tabLayout.getTabAt(1)!!
|
||||
|
||||
pageList.forEachIndexed { i, p ->
|
||||
tabLayout.getTabAt(i)?.icon = ContextCompat.getDrawable(tabLayout.context, p.tabIconId)
|
||||
val mediator = TabLayoutMediator(tabLayout, pager, true, true) { tab, position ->
|
||||
tab.setIcon(pageList[position].iconId)
|
||||
tab.setContentDescription(pageList[position].descriptionId)
|
||||
}
|
||||
|
||||
mediator.attach()
|
||||
discoveryTab = tabLayout.getTabAt(1)!!
|
||||
}
|
||||
|
||||
fun showSavedServers() {
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
|
|
|
|||
|
|
@ -62,6 +62,8 @@
|
|||
<string name="msg_copied_to_clipboard">Copied!</string>
|
||||
<string name="desc_navigation_btn">Open Navigation Drawer</string>
|
||||
<string name="desc_disconnected_icon">Disconnected state indicator icon</string>
|
||||
<string name="desc_saved_servers_tab">Saved Servers</string>
|
||||
<string name="desc_discovered_servers_tab">Discovered Servers</string>
|
||||
<string name="desc_add_server_btn">Add Server</string>
|
||||
<string name="desc_kb_btn">Show Keyboard</string>
|
||||
<string name="desc_vk_btn">Show Virtual Keys</string>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue