Имеется две вкладки, реализованные через TabLayout, ViewPager и Fragment. При отображении первой вкладки показывается кнопка FloatingActionButton. При переходе на вторую вкладку эта кнопка плавно скрывается.
Если тапать по заголовку первой вкладки, то наблюдается Ripple Effect. Однако, если тапнуть по заголовку второй вкладки, то этот эффект начинает отображаться, но не успевает закончиться. Он резко пропадает именно в момент когда полностью исчезает кнопка FAB.
Иногда при возврате на первую вкладку по тапу, этот эффект вовсе отсутствует. Это происходит от случая к случаю.
Подскажите, пожалуйста, как решить эту проблему? Возможно что-то с чем-то конфликтует?
...
public class MainActivity extends AppCompatActivity
{
FloatingActionButton fab;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
ViewPager viewPager = (ViewPager) findViewById(R.id.my_container);
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.my_tabs);
tabLayout.setupWithViewPager(viewPager);
fab = (FloatingActionButton) findViewById(R.id.my_fab);
fab.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
...
}
});
// плавно убирает кнопку fab
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener()
{
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position)
{
switch (position)
{
case 0: fab.show(); break;
case 1: fab.hide(); break;
}
}
@Override
public void onPageScrollStateChanged(int state) {}
});
}
private class SectionsPagerAdapter extends FragmentStatePagerAdapter
{
private SectionsPagerAdapter(FragmentManager fragmentManager)
{
super(fragmentManager);
}
// отображение определённого фрагмента
@Override
public Fragment getItem(int position)
{
switch (position)
{
case 0: return new Fragment1(); // отображаем содержимое фрагмента 1
case 1: return new Fragment2(); // отображаем содержимое фрагмента 2
default: return null;
}
}
// общее количество вкладок
@Override
public int getCount()
{
return 2;
}
// заголовки вкладок
@Override
public CharSequence getPageTitle(int position)
{
switch (position)
{
case 0: return "ВКЛАДКА 1";
case 1: return "ВКЛАДКА 2";
}
return null;
}
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей