[英]Animate TabLayout Icons Using ViewPager AddOnPageListener
I was making a simple filled and unfilled tab icons to my tab layout using the viewPager.addOnPageListener
. 我使用
viewPager.addOnPageListener
将简单的填充和未填充选项卡图标制作为选项卡布viewPager.addOnPageListener
。 I try it, by creating an array of icons. 我尝试通过创建图标数组来进行尝试。
The problem is that viewPager.addOnPageListener
doesn't return false
. 问题是
viewPager.addOnPageListener
不会返回false
。 It always return true
. 它总是返回
true
。 And if I invert the statement it always returns false
. 如果我反转该语句,它总是返回
false
。
Here's my sample code: 这是我的示例代码:
//TAB ICONS
private final int[] icons = {R.drawable.home_96px,R.drawable.view_details_75px,R.drawable.today_75px,R.drawable.group_75px};
private final int[] iconsFilled = {R.drawable.home_filled_96px,R.drawable.view_details_filled_75px,R.drawable.today_filled_75px,R.drawable.group_filled_75px};
//MAP VIEWPAGER AND TAB
public void setUpViewTab(){
viewPager = (ViewPager) findViewById(R.id.viewpager);
mTabLayout = (TabLayout) findViewById(R.id.tablayout);
setupViewPager(viewPager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//CHANGE THE TOOLBAR TEXT AS IT TRANSFER TO OTHER FRAGMENTS
switch (position){
case 0:
if (position == 0) {
mTabLayout.getTabAt(0).setIcon(iconsFilled[0]);
mToolbar.setTitle("Yayong");
}else {
mTabLayout.getTabAt(0).setIcon(icons[0]);
}
break;
case 1:
mTabLayout.getTabAt(1).setIcon(iconsFilled[1]);
mToolbar.setTitle("News");
break;
case 2:
mTabLayout.getTabAt(2).setIcon(iconsFilled[2]);
mToolbar.setTitle("Events");
break;
case 3:
mTabLayout.getTabAt(3).setIcon(iconsFilled[3]);
mToolbar.setTitle("Users");
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mTabLayout.setupWithViewPager(viewPager);
}
I try if else
statement to see if it return false but didn't. 我尝试
if else
语句查看它是否返回false,但没有返回。
I know its' too late.. but still who are looking for an answer, here is the snippet 我知道为时已晚..但是仍然在寻找答案的人,这是代码段
Set the listener to the viewpager 将监听器设置为viewpager
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
setupTabIcons(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
Method to change the Icon 更改图标的方法
private int tabIconsFocus [] = new int[]{R.drawable.ic_conversation_focus,R.drawable.ic_contact_people_focus, R.drawable.ic_settings_focus};
private int tabIconsNoFocus [] = new int[]{R.drawable.ic_conversation_no_focus,R.drawable.ic_contact_people_no_focus, R.drawable.ic_settings_no_focus};
private void setupTabIcons(int pos) {
switch (pos){
case 0:
tabLayout.getTabAt(0).setIcon(tabIconsFocus[0]);
tabLayout.getTabAt(1).setIcon(tabIconsNoFocus[1]);
tabLayout.getTabAt(2).setIcon(tabIconsNoFocus[2]);
break;
case 1:
tabLayout.getTabAt(0).setIcon(tabIconsNoFocus[0]);
tabLayout.getTabAt(1).setIcon(tabIconsFocus[1]);
tabLayout.getTabAt(2).setIcon(tabIconsNoFocus[2]);
break;
case 2:
tabLayout.getTabAt(0).setIcon(tabIconsNoFocus[0]);
tabLayout.getTabAt(1).setIcon(tabIconsNoFocus[1]);
tabLayout.getTabAt(2).setIcon(tabIconsFocus[2]);
break;
}
}
Note: this will not animate the item icon.. but does change the icon when the page changes 注意:这不会为项目图标设置动画。但是当页面更改时,图标的确会更改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.