-
-
Notifications
You must be signed in to change notification settings - Fork 57
进阶使用
xuexiangjys edited this page Aug 8, 2021
·
2 revisions
使用PageOption.to
进行页面选项构建。
- setAnim: 设置页面转场动画
- setRequestCode: 设置页面打开的请求码,用于返回结果
- setAddToBackStack: 设置是否加入堆栈
- setNewActivity: 设置是否使用新的Activity打开
- setContainActivityClazz:设置新打开Activity的容器
- putBoolean、putString、putAll等:设置传递的参数
- open:打开页面进行跳转
PageOption.to(TestFragment.class) //跳转的fragment
.setAnim(CoreAnim.zoom) //页面转场动画
.setRequestCode(100) //请求码,用于返回结果
.setAddToBackStack(true) //是否加入堆栈
.setNewActivity(true, ContainActivity.class) //是否使用新的Activity打开
.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, true) //传递的参数
.open(this); //打开页面进行跳转
可以设置XPageTitleBarStyle
主题样式来自定义标题栏的默认样式。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/xpage_default_actionbar_color</item>
<item name="colorPrimaryDark">@color/xpage_default_actionbar_color</item>
<item name="colorAccent">@color/xpage_default_actionbar_color</item>
<!--标题栏的背景图片,优先使用背景图片,没有背景图片才使用背景颜色,可选-->
<item name="xpage_actionbar_background">@null</item>
<!--标题栏的背景颜色-->
<item name="xpage_actionbar_color">@color/xpage_default_actionbar_color</item>
<!--是否支持沉浸式标题栏, 默认false-->
<item name="xpage_actionbar_immersive">false</item>
<!--标题栏返回箭头, 默认R.drawable.xpage_ic_navigation_back_white-->
<item name="xpage_actionbar_navigation_back">@drawable/xpage_ic_navigation_back_white</item>
<!--标题栏的高度,默认52dp-->
<item name="xpage_actionbar_height">60dp</item>
<!--标题栏标题文字的大小,默认18sp-->
<item name="xpage_actionbar_title_text_size">21sp</item>
<!--标题栏副标题文字的大小,默认12sp-->
<item name="xpage_actionbar_sub_text_size">14sp</item>
<!--标题栏动作文字的大小,默认15sp-->
<item name="xpage_actionbar_action_text_size">18sp</item>
<!--标题栏动作图片的padding,默认5dp-->
<item name="xpage_actionbar_action_padding">6dp</item>
<!--标题栏两侧文字的padding,默认14dp-->
<item name="xpage_actionbar_side_text_padding">16dp</item>
<item name="XPageTitleBarStyle">@style/XPageTitleBar.Custom</item>
</style>
<style name="XPageTitleBar.Custom">
<item name="tb_immersive">false</item>
<item name="tb_centerGravity">center</item>
</style>
详细可参见BottomNavigationViewFragment
就像正常使用ViewPager加载Fragment那样。但是这里需要注意的两点是:
- 由于使用ViewPager进行加载,而非XPage,因此Fragment的initTitleBar方法需要被覆盖。
@Override
protected TitleBar initTitleBar() {
//不使用@Page标注的一定要注意覆盖这个方法
return null;
}
- 由于为了新开页面不影响Tab主页当前容器的状态,需要在打开新页面的使用设置使用新容器。
PageOption.to(TestFragment.class)
//新建一个容器,以不影响当前容器
.setNewActivity(true)
.open(this);
详细可参见ComplexActivity
1.自定义页面容器的布局,在布局中一定要包含idfragment_container
。
<FrameLayout
android:id="@id/fragment_container"
android:layout_width="match_parent"
android:layout_height="400dp">
</FrameLayout>
2.在XPageActivity中设置页面容器的自定义布局
@Override
protected View getCustomRootView() {
binding = ActivityComplexBinding.inflate(getLayoutInflater());
return binding.getRoot();
}
3.使用changePage
方法切换Fragment。
changePage(TestFragment.PAGE_NAME, null, CoreAnim.none);
【注意】在切换Fragment的时候,fragment并不会走onResume和onPause生命周期,建议使用onHiddenChanged代替。
4.使用getPage
方法获取指定的Fragment,就可以获取该fragment页面中的数据。
TabAFragment tabAFragment = getPage(TabAFragment.class);
if (tabAFragment != null) {
ToastUtils.toast(tabAFragment.getData());
} else {
ToastUtils.toast("页面还未加载!");
}