react-native-navigation的迁移库

ViewControllerOverlay.kt 855B

12345678910111213141516171819202122232425262728
  1. package com.reactnativenavigation.viewcontrollers.viewcontrolleroverlay
  2. import android.content.Context
  3. import android.view.View
  4. import android.view.ViewGroup
  5. import android.view.ViewGroup.LayoutParams.MATCH_PARENT
  6. import android.widget.FrameLayout
  7. import com.reactnativenavigation.utils.ViewUtils.removeFromParent
  8. class ViewControllerOverlay(context: Context) {
  9. private val overlay: FrameLayout = FrameLayout(context)
  10. fun add(parent: ViewGroup, view: View) {
  11. attachOverlayToParent(parent)
  12. overlay.addView(view)
  13. }
  14. fun remove(view: View) {
  15. overlay.removeView(view)
  16. if (overlay.childCount == 0) removeFromParent(overlay)
  17. }
  18. private fun attachOverlayToParent(parent: ViewGroup) {
  19. if (overlay.parent == null) {
  20. parent.addView(overlay, MATCH_PARENT, MATCH_PARENT)
  21. }
  22. }
  23. }