android.view.ViewGroup#setOnHierarchyChangeListener ( )源码实例Demo

下面列出了android.view.ViewGroup#setOnHierarchyChangeListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_tab_2);
  bottomNavigationView = (ReactBottomNavigation) findViewById(R.id.bottom_navigation);
  bottomNavigationView.setOnNavigationItemSelectedListener(this);
  tabConfigContainer = (ViewGroup) findViewById(R.id.tab_config_container);
  tabConfigContainer.setOnHierarchyChangeListener(reactViewChangeListener);
  ScreenCoordinatorLayout container = (ScreenCoordinatorLayout) findViewById(R.id.content);
  tabCoordinator = new TabCoordinator(this, container, savedInstanceState);

  ReactNativeFragment tabConfigFragment = ReactNativeFragment.newInstance("TabScreen", null);
  getSupportFragmentManager().beginTransaction()
          .add(R.id.tab_config_container, tabConfigFragment)
          .commitNow();
}
 
private void setImportantForAccessibilityToNoHelper(View v) {
    mPreviousValues.put(v, v.getImportantForAccessibility());
    v.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);

    // Call method on children recursively
    if (v instanceof ViewGroup) {
        ViewGroup vg = (ViewGroup) v;
        vg.setOnHierarchyChangeListener(this);
        for (int i = 0; i < vg.getChildCount(); i++) {
            View child = vg.getChildAt(i);

            if (includeView(child)) {
                setImportantForAccessibilityToNoHelper(child);
            }
        }
    }
}
 
private void restoreImportantForAccessibilityHelper(View v) {
    Integer important = mPreviousValues.get(v);
    v.setImportantForAccessibility(important);
    mPreviousValues.remove(v);

    // Call method on children recursively
    if (v instanceof ViewGroup) {
        ViewGroup vg = (ViewGroup) v;

        // We assume if a class implements OnHierarchyChangeListener, it listens
        // to changes to any of its children (happens to be the case in Launcher)
        if (vg instanceof OnHierarchyChangeListener) {
            vg.setOnHierarchyChangeListener((OnHierarchyChangeListener) vg);
        } else {
            vg.setOnHierarchyChangeListener(null);
        }
        for (int i = 0; i < vg.getChildCount(); i++) {
            View child = vg.getChildAt(i);
            if (includeView(child)) {
                restoreImportantForAccessibilityHelper(child);
            }
        }
    }
}
 
public static void setFor(ViewGroup group) {
    if (group == null) {
        return;
    }

    OnHierarchyChangeListener currentListener = getCurrentListener(group);
    if (currentListener instanceof PXHierarchyListener) {
        // We've already added ours to it, so nothing more to do.
        return;
    }

    // RadioGroup check to avoid StackOverflow issues. The RadioGroup uses a
    // similar delegation technique that trigger a StackOverflow, so we
    // should not pass the currentListener to it.
    if (!(group instanceof RadioGroup)) {
        group.setOnHierarchyChangeListener(new PXHierarchyListener(currentListener));
    } else {
        group.setOnHierarchyChangeListener(new PXHierarchyListener(null));
    }
    addGlobalLayoutListener(group);
}
 
源代码5 项目: coordinators   文件: Coordinators.java
/**
 * Installs a binder that calls {@link #bind(View, CoordinatorProvider)} for any child view added
 * to the group.
 */
public static void installBinder(@NonNull ViewGroup viewGroup,
    @NonNull final CoordinatorProvider provider) {
  int childCount = viewGroup.getChildCount();
  for (int i = 0; i < childCount; i++) {
    bind(viewGroup.getChildAt(i), provider);
  }
  viewGroup.setOnHierarchyChangeListener(new Binder(provider));
}
 
源代码6 项目: debugdrawer   文件: HierarchyTreeChangeListener.java
@Override public void onChildViewAdded(View parent, View child) {
  delegate.onChildViewAdded(parent, child);

  if (child instanceof ViewGroup) {
    ViewGroup childGroup = (ViewGroup) child;
    childGroup.setOnHierarchyChangeListener(this);
    for (int i = 0; i < childGroup.getChildCount(); i++) {
      onChildViewAdded(childGroup, childGroup.getChildAt(i));
    }
  }
}
 
源代码7 项目: debugdrawer   文件: HierarchyTreeChangeListener.java
@Override public void onChildViewRemoved(View parent, View child) {
  if (child instanceof ViewGroup) {
    ViewGroup childGroup = (ViewGroup) child;
    for (int i = 0; i < childGroup.getChildCount(); i++) {
      onChildViewRemoved(childGroup, childGroup.getChildAt(i));
    }
    childGroup.setOnHierarchyChangeListener(null);
  }

  delegate.onChildViewRemoved(parent, child);
}
 
源代码8 项目: u2020-mvp   文件: HierarchyTreeChangeListener.java
@Override
public void onChildViewAdded(View parent, View child) {
    delegate.onChildViewAdded(parent, child);

    if (child instanceof ViewGroup) {
        ViewGroup childGroup = (ViewGroup) child;
        childGroup.setOnHierarchyChangeListener(this);
        for (int i = 0; i < childGroup.getChildCount(); i++) {
            onChildViewAdded(childGroup, childGroup.getChildAt(i));
        }
    }
}
 
源代码9 项目: u2020-mvp   文件: HierarchyTreeChangeListener.java
@Override
public void onChildViewRemoved(View parent, View child) {
    if (child instanceof ViewGroup) {
        ViewGroup childGroup = (ViewGroup) child;
        for (int i = 0; i < childGroup.getChildCount(); i++) {
            onChildViewRemoved(childGroup, childGroup.getChildAt(i));
        }
        childGroup.setOnHierarchyChangeListener(null);
    }

    delegate.onChildViewRemoved(parent, child);
}
 
源代码10 项目: u2020   文件: HierarchyTreeChangeListener.java
@Override public void onChildViewAdded(View parent, View child) {
  delegate.onChildViewAdded(parent, child);

  if (child instanceof ViewGroup) {
    ViewGroup childGroup = (ViewGroup) child;
    childGroup.setOnHierarchyChangeListener(this);
    for (int i = 0; i < childGroup.getChildCount(); i++) {
      onChildViewAdded(childGroup, childGroup.getChildAt(i));
    }
  }
}
 
源代码11 项目: u2020   文件: HierarchyTreeChangeListener.java
@Override public void onChildViewRemoved(View parent, View child) {
  if (child instanceof ViewGroup) {
    ViewGroup childGroup = (ViewGroup) child;
    for (int i = 0; i < childGroup.getChildCount(); i++) {
      onChildViewRemoved(childGroup, childGroup.getChildAt(i));
    }
    childGroup.setOnHierarchyChangeListener(null);
  }

  delegate.onChildViewRemoved(parent, child);
}
 
 方法所在类