编辑:经过更多调查,事实证明这与ViewPager
. 问题在于ViewGroup
在 XML 中设置可见性属性,然后尝试在运行时更改它。我将保留原来的问题。有关更多信息,请参阅下面的答案。
我有一个带有ViewPager
一个自定义PagerIndicator
类的布局。在 的第 0 页上ViewPager
,我希望指标是View.GONE
。在其他页面上,我希望它是View.VISIBLE
. 这是我的代码,在 期间调用onCreate
:
void setupPager() {
mPager.setAdapter(new TutorialPagerAdapter());
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int currentPage) {
Log.d(TAG, String.valueOf(currentPage));
if (currentPage == 0) {
mPagerIndicator.setVisibility(View.GONE);
} else {
mPagerIndicator.setVisibility(View.VISIBLE);
}
mPagerIndicator.setCurrentPage(currentPage);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
mPagerIndicator
是android:visibility="invisible"
在 XML 布局中设置的。当我在页面之间滚动时,我可以看到正在调用回调,并且页码是正确的。但是,寻呼机没有出现。
这就是它变得奇怪的地方:我加载了 SDK 附带的 Android Hierarchy Viewer。当它从模拟器加载视图层次结构时,POOF,指示器出现了。在物理设备上似乎也不是问题。(编辑:经过更多测试,这似乎是 2.3 的问题,因为它不会发生在更高版本的设备上,但会发生在 2.3.6 手机上。)
知道为什么会这样吗?假设这只是模拟器的一个怪癖是否合理,还是我应该担心它在某些设备上不起作用?有什么技巧可以让它显示出来吗?层次结构查看器做了什么可能会迫使它自行刷新?