From a4bd2bdd8fc29be53c8b5642f805a411ee16fada Mon Sep 17 00:00:00 2001 From: Jeremy Klein Date: Mon, 24 Aug 2015 15:20:02 -0700 Subject: TabLayout.setupWithViewPager is broken. Implement a fixed version. This fixes an issue where the tab indicator was disappearing when the device was rotated. It also avoids a total crash when updating to 22.2.1 design support libraries. --- .../main/java/org/connectbot/ConsoleActivity.java | 28 +++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/src/main/java/org/connectbot/ConsoleActivity.java b/app/src/main/java/org/connectbot/ConsoleActivity.java index 9ac0c95..0e23979 100644 --- a/app/src/main/java/org/connectbot/ConsoleActivity.java +++ b/app/src/main/java/org/connectbot/ConsoleActivity.java @@ -623,7 +623,7 @@ public class ConsoleActivity extends AppCompatActivity implements BridgeDisconne tabs = (TabLayout) findViewById(R.id.tabs); if (tabs != null) - tabs.setupWithViewPager(pager); + setupTabLayoutWithViewPager(); // detect fling gestures to switch between terminals final GestureDetector detect = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @@ -798,6 +798,32 @@ public class ConsoleActivity extends AppCompatActivity implements BridgeDisconne }); } + /** + * Ties the {@link TabLayout} to the {@link ViewPager}. + * + *

This method will: + *

+ *

+ */ + public void setupTabLayoutWithViewPager() { + tabs.setTabsFromPagerAdapter(adapter); + pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs)); + tabs.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(pager)); + + if (adapter.getCount() > 0) { + final int curItem = pager.getCurrentItem(); + if (tabs.getSelectedTabPosition() != curItem) { + tabs.getTabAt(curItem).select(); + } + } + } + /** * */ -- cgit v1.2.3