편집 : 더 많은 조사가 끝나면 ViewPager
과 아무 관련이 없습니다. 문제는 XML에서 ViewGroup
의 가시성 속성을 설정 한 다음 런타임에 변경하려고 시도하는 것입니다. 나는 원래의 질문을 그대로 남겨두고있다. 자세한 내용은 내 대답 below을 참조하십시오.보기 SetVisibility가 PagerAdapter와 작동하지 않습니다.
ViewPager
및 맞춤 PagerIndicator
클래스가있는 레이아웃이 있습니다. ViewPager
의 0 번째 페이지에서 표시기를 View.GONE
으로 지정합니다. 다른 페이지에서는 View.VISIBLE
이되고 싶습니다.
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
은 XML 레이아웃 android:visibility="invisible"
로 설정됩니다 여기 onCreate
동안이라고 내 코드입니다. 페이지 사이를 스크롤 할 때 콜백이 호출되고 페이지 번호가 정확한지 확인할 수 있습니다. 그러나 호출기가 나타나지 않습니다.
이것은 기괴한 곳입니다. SDK와 함께 제공되는 Android 계층 구조 뷰어를로드했습니다. 에뮬레이터 인 POOF에서 뷰 계층 구조를로드하면 표시기가 나타납니다. 또한 물리적 장치에서는 문제가되지 않습니다. (EDIT : 더 많은 테스트가 끝나면 버전이 높은 장치에서는 발생하지 않으므로 2.3에서는 문제가있는 것으로 나타 났지만 2.3.6 전화에서 발생합니다.)
사고? 이것이 에뮬레이터의 단점이라고 생각하는 것이 합리적일까요, 아니면 일부 장치에서는 작동하지 않을까 걱정해야합니까? 그걸 보여주기위한 해킹 이요? 계층 뷰어가하는 일은 그것이 자신을 리프레시하도록 강요 할 수 있습니까?
즉, 표시기는 첫 번째 페이지에서 제대로 표시되지 않고 다음 페이지에서 올바르게 표시되며 페이지를 전환 할 때 앞뒤로 전환됩니다. 모든 표시 여부 전환을 제거하면 각 페이지의 위치를 볼 수 있습니다. – karl
필자는 그것이 에뮬레이터 일 뿐이라고 생각했지만, 장치의 2.x에는 문제가있는 것처럼 보입니다. – karl