我有一个ViewPager内三页(片段),但我只想要两那些页面显示的菜单项。
在给定的代码之前的SO答案似乎不工作:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) { }
else if (isVisibleToUser == false) { }
}
Eclipse中说不需要@覆盖和超级不能设置。 这是从来没有被系统调用,即使它是我将如何确定正在显示的时刻哪一页? 我能有一些帮助吗?
使用ViewPager.onPageChangeListener
:
viewPager.addOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
public void onPageSelected(int position) {
// Check if this is the page you want.
}
});
ViewPager.setOnPageChangeListener
现在已经过时了。 现在,您需要使用ViewPager.addOnPageChangeListener
代替。
例如,
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
您还可以使用ViewPager.SimpleOnPageChangeListener
代替ViewPager.OnPageChangeListener
并只覆盖您要使用这些方法。
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
// optional
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
// optional
@Override
public void onPageSelected(int position) { }
// optional
@Override
public void onPageScrollStateChanged(int state) { }
});
希望这有助于:)
编辑:按照机器人的API, setOnPageChangeListener (ViewPager.OnPageChangeListener listener)
已被弃用。 请检查此网址: - 安卓ViewPager API
对于科特林,
view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
}
override fun onPageSelected(position: Int) {
}
})