d94a45b008cdcb7359f101b8f83f25c5d7cc3145.svn-base 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package eVVM.apk.common;
  2. import com.gyf.barlibrary.ImmersionBar;
  3. import com.hjq.base.BaseLazyFragment;
  4. public abstract class UILazyFragment<A extends UIActivity> extends BaseLazyFragment<A> {
  5. private ImmersionBar mImmersionBar; // 状态栏沉浸
  6. @Override
  7. protected void initFragment() {
  8. initImmersion();
  9. super.initFragment();
  10. }
  11. /**
  12. * 初始化沉浸式
  13. */
  14. protected void initImmersion() {
  15. // 初始化沉浸式状态栏
  16. if (isStatusBarEnabled()) {
  17. statusBarConfig().init();
  18. // 设置标题栏
  19. if (getTitleId() > 0) {
  20. ImmersionBar.setTitleBar(mActivity, findViewById(getTitleId()));
  21. }
  22. }
  23. }
  24. /**
  25. * 是否在Fragment使用沉浸式
  26. */
  27. public boolean isStatusBarEnabled() {
  28. return false;
  29. }
  30. /**
  31. * 获取状态栏沉浸的配置对象
  32. */
  33. protected ImmersionBar getStatusBarConfig() {
  34. return mImmersionBar;
  35. }
  36. /**
  37. * 初始化沉浸式
  38. */
  39. private ImmersionBar statusBarConfig() {
  40. //在BaseActivity里初始化
  41. mImmersionBar = ImmersionBar.with(this)
  42. .statusBarDarkFont(statusBarDarkFont()) //默认状态栏字体颜色为黑色
  43. .keyboardEnable(true); //解决软键盘与底部输入框冲突问题,默认为false,还有一个重载方法,可以指定软键盘mode
  44. return mImmersionBar;
  45. }
  46. /**
  47. * 获取状态栏字体颜色
  48. */
  49. protected boolean statusBarDarkFont() {
  50. //返回true表示黑色字体
  51. return true;
  52. }
  53. @Override
  54. public void onDestroy() {
  55. super.onDestroy();
  56. if (mImmersionBar != null) mImmersionBar.destroy();
  57. }
  58. @Override
  59. public void setUserVisibleHint(boolean isVisibleToUser) {
  60. super.setUserVisibleHint(isVisibleToUser);
  61. if (isVisibleToUser && isStatusBarEnabled() && isLazyLoad()) {
  62. // 重新初始化状态栏
  63. statusBarConfig().init();
  64. }
  65. }
  66. }