Android:ViewPager为页卡内视图组件添加事件
在数据适配器PagerAdapter的初始化方法中添加按钮事件,这里是关键,首先判断当前的页卡编号。必须使用当前的view来获取按钮。
@Override public Object instantiateItem(View arg0, int arg1) { if (arg1 < 3) { ((ViewPager) arg0).addView(mListViews.get(arg1 % 3), 0); } // 测试页卡1内的按钮事件 if (arg1 == 0) { Button btn = (Button) arg0.findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new AlertDialog.Builder(MainActivity.this) .setTitle("说明") .setMessage("单个页卡内按钮事件测试") .setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { } }).show(); } }); } return mListViews.get(arg1 % 3); }
如果不在这里面添加事件,那么在viewpager的视图经过切换后,原有的视图里组件事件将丢失。
viewpager.setOffscreenPageLimit(int num)可以设置预先加载的页面个数。因为每个页面都有若干个子页面,如果不预先把7个页面全加载完,那么在滑动几次后将丢失之前页面的一些子页面显示状态
另外,需要注意的是在ViewPager中,它除了加载当前页,还会加载当前页的左右页(无论它们实际可不可见)。除了当前页的View算是可见的,其左右页的View算是可见的(无论它们实际可不可见),即onWindowVisibilityChanged(int visibility)中的参数是View.VISIBLE。