you can do this with the help of an interface and setUserVisibleHint(boolean isVisibleToUser) inside fragment.
colorChangeInterface:
public interface ColorChangeInterface {
void setToolbarAndTabColor(int position);
}
MainActivity:
public class MainActivity extends AppCompatActivity implements ColorChangeInterface
{
public void setToolbarAndTabColor(int position)
{
if(position==1)
{
toolbar.setBackgroundColor(ContextCompat.getColor(getApplicationContext(),R.color.classColor4));
tabLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(),R.color.classColor4));
Log.d("colorchange",String.valueOf(position));
}
else if(position ==2)
{
toolbar.setBackgroundColor(ContextCompat.getColor(getApplicationContext(),R.color.classColor2));
tabLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(),R.color.classColor2));
Log.d("colorchange", String.valueOf(position));
}
}
FragmentOne:
Make your fragment use default override method setUserVisibleHint.
This is to check whether the current Fragment is visible in ViewPager, if Visible change the color of the toolbar and Tabbar using Interface.
public class FragmentOne extends Fragment {
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
{
ColorChangeInterface colorChangeInterface = (ColorChangeInterface) getActivity();
colorChangeInterface.setToolbarAndPagerColor(1);
Log.d("TAG","Current Fragment is visible");
}
}
}
FragmentTwo:
public class FragmentOne extends Fragment {
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
{
ColorChangeInterface colorChangeInterface = (ColorChangeInterface) getActivity();
colorChangeInterface.setToolbarAndPagerColor(2);
Log.d("TAG","Current Fragment is visible");
}
}
}
or
If you are just looking to change Toolbar color in every swipe.
public class FragmentOne extends Fragment {
Toolbar toolbar;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
{
toolbar.setBackgroundColor(ContextCompat.getColor(getApplicationContext(),R.color.classColor2));
}
}
}