【发布时间】:2018-03-07 09:16:55
【问题描述】:
虽然在 tablayout 位置值选项卡中切换选项卡没有改变。请参阅下面的代码。
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
tab.getIcon().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tab.getIcon().setColorFilter(Color.parseColor("#40FFFFFF"), PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
onTabSelected() 方法我将它的位置值作为参考,但是在切换选项卡时它的位置值没有改变。所以我尝试分配下面的代码来参考这也不适用于我。
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
tabposition=position;
}
@Override
public void onPageScrollStateChanged(int state) {
// Hide the keyboard.
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(viewPager.getWindowToken(), 0);
}
});
我想在这里使用位置值
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
menu.clear();
Log.d("position", "--------- "+tabposition);
if (tabposition == 0) {
getMenuInflater().inflate(R.menu.main, menu); // menu for alert.
} else if (tabposition ==1){
getMenuInflater().inflate(R.menu.transactionmenu, menu); // menu for transactiontab
}else {
getMenuInflater().inflate(R.menu.notificationsmenu, menu); // menu for notificationtab
}
return super.onPrepareOptionsMenu(menu);
//return true;
}
【问题讨论】:
-
你是否在 viewpager 中使用 tablayout?
-
是的,我只用那个
-
那么你可以使用
fragments and FragmentPagerAdapter。你不需要使用addOnPageChangeListener and setOnTabSelectedListener
标签: android android-fragments android-tablayout