课堂笔记
- ViewPager 显示 fragment 用的是 replace 方法,每次切换时都需要销毁旧的 fragment 和创建新的 fragment,这样切换 fragment 花费的时间就很长,出现卡顿的感觉,所以我们用 add 方法替换 replace 方法,用 show 和 hide 控制 fragment 的显示和隐藏
private BaseFragment lastOneFragment = null;
private void switchFragment(BaseFragment targetFragment) {
//每次添加fragment都需要开启事务
FragmentTransaction transaction = mFragmentManager.beginTransaction();
if (!targetFragment.isAdded()) {
transaction.add(R.id.main_pager_container, targetFragment);
} else {
transaction.show(targetFragment);
}
if (lastOneFragment != null) {
transaction.hide(lastOneFragment);
}
lastOneFragment = targetFragment;
transaction.commit();
}
- 处理 ViewPager 的焦点问题,添加属性 android:descendantFocusability="blocksDescendants"
<com.lcodecore.tkrefreshlayout.views.TbNestedScrollView
android:id="@+id/home_pager_nested_scroller"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical">
<LinearLayout
......
- 我的虚拟机感觉添不添加这个属性都一样,焦点始终是对的
- 观看视频