/**
* 解决在dialog中使用 TabLayout+ViewPager 报ViewPager找不到id的问题
* 使用:直接把这个类复制到项目里改改,然后直接调用即可
*/
public class BuyerLiveGoodsDialog extends DialogFragment {
private TextView tvName;
private TextView tvType;
private SlidingTabLayout mSlidingTabLayout;
private ViewPager mViewPager;
private List<Fragment> mFragmentList = new ArrayList<>();
private final String[] mTitles = {"人口", "单位", "场所"};
private String num;
private String houseUseLabel;
private String houseId; // 房屋id
private String buildingId; // 楼宇id
public BuyerLiveGoodsDialog(String num, String houseUseLabel, String houseId, String buildingId) {
this.num = num;
this.houseUseLabel = houseUseLabel;
this.houseId = houseId;
this.buildingId = buildingId;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.house_list_item_dialog, container, false);
tvName = (TextView) view.findViewById(R.id.tvName);
tvType = (TextView) view.findViewById(R.id.tvType);
mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.mSlidingTabLayout);
mViewPager = (ViewPager) view.findViewById(R.id.mViewPager);
tvName.setText(num);
tvType.setText(houseUseLabel);
// 添加fragment
mFragmentList.add(PeopleListFragment.open(houseId,"","","")); // 人口
mFragmentList.add(UnitListFragment.open(houseId, buildingId)); // 单位
mFragmentList.add(PlaceListFragment.open(houseId, buildingId)); // 场所
// ViewPager
mViewPager.setAdapter(new HouseListViewPagerAdapter(getChildFragmentManager(), mFragmentList));
mViewPager.setOffscreenPageLimit(mFragmentList.size());
mViewPager.setCurrentItem(0);
// SlidingTabLayout
mSlidingTabLayout.setViewPager(mViewPager, mTitles);
mSlidingTabLayout.setOnTabSelectListener(new OnTabSelectListener() {
@Override
public void onTabSelect(int position) {
mViewPager.setCurrentItem(position);
}
@Override
public void onTabReselect(int position) {
}
});
return view;
}
@Override
public void onStart() {
super.onStart();
Window window = getDialog().getWindow();
if (window != null) {
// 一定要设置Background,如果不设置,window属性设置无效
window.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.text_color)));
DisplayMetrics dm = new DisplayMetrics();
if (getActivity() != null) {
WindowManager windowManager = getActivity().getWindowManager();
if (windowManager != null) {
windowManager.getDefaultDisplay().getMetrics(dm);
WindowManager.LayoutParams params = window.getAttributes();
params.gravity = Gravity.BOTTOM;
// 使用ViewGroup.LayoutParams,以便Dialog 宽度充满整个屏幕
//设置窗口宽度为充满全屏
params.width = WindowManager.LayoutParams.MATCH_PARENT;
//设置窗口高度为包裹内容
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(params);
}
}
}
}
public static void showDialog(FragmentManager fragmentManager, String num, String houseUseLabel,String houseId, String buildingId) {
BuyerLiveGoodsDialog dialog = new BuyerLiveGoodsDialog(num, houseUseLabel, houseId, buildingId);
dialog.show(fragmentManager, "tag");
}
}
解决在dialog中使用 TabLayout+ViewPager 报ViewPager找不到id的问题
最新推荐文章于 2024-11-21 13:42:01 发布