Fixed TabLayout tab select not working
This commit is contained in:
parent
a8fe19ea6b
commit
36b9ae5288
3 changed files with 31 additions and 55 deletions
|
@ -10,9 +10,10 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
|
|||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import com.google.android.material.tabs.TabLayoutMediator;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
private static String[] names;
|
||||
private static int[] names;
|
||||
|
||||
/**
|
||||
* The pager widget, which handles animation and allows swiping horizontally to access previous
|
||||
|
@ -31,31 +32,15 @@ public class MainActivity extends AppCompatActivity {
|
|||
FragmentStateAdapter pagerAdapter = new ScreenSlidePagerAdapter(this);
|
||||
viewPager.setAdapter(pagerAdapter);
|
||||
|
||||
names = new String[pagerAdapter.getItemCount()];
|
||||
names[0] = getString(R.string.clock);
|
||||
names[1] = getString(R.string.converter);
|
||||
// set up tab names
|
||||
names = new int[pagerAdapter.getItemCount()];
|
||||
names[0] = R.string.clock;
|
||||
names[1] = R.string.converter;
|
||||
|
||||
TabLayout tabLayout = findViewById(R.id.tabLayout);
|
||||
// add tabs
|
||||
for (int i = 0; i < pagerAdapter.getItemCount(); i++) {
|
||||
tabLayout.addTab(tabLayout.newTab().setText(getName(i)));
|
||||
}
|
||||
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
|
||||
@Override
|
||||
public void onTabSelected(TabLayout.Tab tab) {
|
||||
viewPager.setCurrentItem(tab.getPosition());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabUnselected(TabLayout.Tab tab) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabReselected(TabLayout.Tab tab) {
|
||||
|
||||
}
|
||||
});
|
||||
new TabLayoutMediator(tabLayout, viewPager,
|
||||
(tab, position) -> tab.setText(getName(position)))
|
||||
.attach();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -75,7 +60,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
* sequence.
|
||||
*/
|
||||
private static class ScreenSlidePagerAdapter extends FragmentStateAdapter {
|
||||
private static final Fragment[] fragmentClasses = {new ClockFragment(), new ConverterFragment()};
|
||||
private static final int FRAGMENTSN = 2;
|
||||
|
||||
public ScreenSlidePagerAdapter(FragmentActivity fa) {
|
||||
super(fa);
|
||||
|
@ -84,23 +69,23 @@ public class MainActivity extends AppCompatActivity {
|
|||
@NonNull
|
||||
@Override
|
||||
public Fragment createFragment(int position) {
|
||||
if (position < fragmentClasses.length) {
|
||||
return fragmentClasses[position];
|
||||
if (position == 1) {
|
||||
return new ConverterFragment();
|
||||
}
|
||||
return new Fragment() /* empty */;
|
||||
return new ClockFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return fragmentClasses.length;
|
||||
return FRAGMENTSN;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String getName(int position) {
|
||||
public int getName(int position) {
|
||||
if (position < names.length) {
|
||||
return names[position];
|
||||
}
|
||||
return "";
|
||||
return -1; // error
|
||||
}
|
||||
}
|
|
@ -6,30 +6,20 @@
|
|||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tabLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="@dimen/tablayout_height"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tabLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/tabLayout"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -7,4 +7,5 @@
|
|||
<dimen name="beats_input_width">333dp</dimen>
|
||||
<dimen name="radio_spacing">25dp</dimen>
|
||||
<dimen name="clear_and_convert_side_picker_spacing">50dp</dimen>
|
||||
<dimen name="tablayout_height">50dp</dimen>
|
||||
</resources>
|
Loading…
Reference in a new issue