使用 ViewPager.OnPageChangeListener:
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override public void onPageSelected(int position) {
// 頁面已穩定顯示
Log.d("ViewPager", "Current page: " + position);
}
@Override public void onPageScrollStateChanged(int state) {}
});
**不要**在 ViewPager 上設置 OnClickListener。應在 **PagerAdapter** 的 instantiateItem 中為每個子 View 單獨設置:
@Override
public Object instantiateItem(ViewGroup container, int position) {
View page = inflater.inflate(R.layout.page_layout, container, false);
ImageView img = page.findViewById(R.id.page_image);
img.setOnClickListener(v -> {
// 處理第 position 頁圖片點擊
Toast.makeText(context, "Clicked page " + position, Toast.LENGTH_SHORT).show();
});
container.addView(page);
return page;
}
viewPager.setOnClickListener 不會觸發,因 ViewPager 攔截觸摸事件用於滑動。android:clickable="true" 並綁定 listener。