您可以借助接口和片段内部的 setUserVisibleHint(boolean isVisibleToUser) 来做到这一点。
颜色变化接口:
public interface ColorChangeInterface {
void setToolbarAndTabColor(int position);
}
主要活动:
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));
}
}
片段一:
让您的片段使用默认的覆盖方法 setUserVisibleHint。这是检查当前Fragment在ViewPager中是否可见,如果Visible使用Interface改变工具栏和Tabbar的颜色。
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");
}
}
}
片段二:
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");
}
}
}
或者,
如果您只是想在每次滑动时更改工具栏颜色。
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));
}
}
}