mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
6c0f73b322
Summary: This diff formats the Java class files inside xplat/js/react-native-github. Since google-java-format was enabled in D16071401 we want to codemode the existing code so that users don't have to deal with formatter lint noise at diff-time. ```arc f --paths-cmd 'hg files -I "**/*.java"'``` drop-conflicts Reviewed By: cpojer Differential Revision: D16071725 fbshipit-source-id: fc6e3852e45742c109f0c5ac4065d64201c74204
109 lines
3.3 KiB
Java
109 lines
3.3 KiB
Java
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
|
* directory of this source tree.
|
|
*/
|
|
package com.facebook.react.uimanager;
|
|
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import java.util.List;
|
|
import java.util.WeakHashMap;
|
|
import javax.annotation.Nullable;
|
|
|
|
/** Class providing children management API for view managers of classes extending ViewGroup. */
|
|
public abstract class ViewGroupManager<T extends ViewGroup>
|
|
extends BaseViewManager<T, LayoutShadowNode> implements IViewManagerWithChildren {
|
|
|
|
private static WeakHashMap<View, Integer> mZIndexHash = new WeakHashMap<>();
|
|
|
|
@Override
|
|
public LayoutShadowNode createShadowNodeInstance() {
|
|
return new LayoutShadowNode();
|
|
}
|
|
|
|
@Override
|
|
public Class<? extends LayoutShadowNode> getShadowNodeClass() {
|
|
return LayoutShadowNode.class;
|
|
}
|
|
|
|
@Override
|
|
public void updateExtraData(T root, Object extraData) {}
|
|
|
|
public void addView(T parent, View child, int index) {
|
|
parent.addView(child, index);
|
|
}
|
|
|
|
/**
|
|
* Convenience method for batching a set of addView calls Note that this adds the views to the
|
|
* beginning of the ViewGroup
|
|
*
|
|
* @param parent the parent ViewGroup
|
|
* @param views the set of views to add
|
|
*/
|
|
public void addViews(T parent, List<View> views) {
|
|
for (int i = 0, size = views.size(); i < size; i++) {
|
|
addView(parent, views.get(i), i);
|
|
}
|
|
}
|
|
|
|
public static void setViewZIndex(View view, int zIndex) {
|
|
mZIndexHash.put(view, zIndex);
|
|
}
|
|
|
|
public static @Nullable Integer getViewZIndex(View view) {
|
|
return mZIndexHash.get(view);
|
|
}
|
|
|
|
public int getChildCount(T parent) {
|
|
return parent.getChildCount();
|
|
}
|
|
|
|
public View getChildAt(T parent, int index) {
|
|
return parent.getChildAt(index);
|
|
}
|
|
|
|
public void removeViewAt(T parent, int index) {
|
|
parent.removeViewAt(index);
|
|
}
|
|
|
|
public void removeView(T parent, View view) {
|
|
for (int i = 0; i < getChildCount(parent); i++) {
|
|
if (getChildAt(parent, i) == view) {
|
|
removeViewAt(parent, i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void removeAllViews(T parent) {
|
|
for (int i = getChildCount(parent) - 1; i >= 0; i--) {
|
|
removeViewAt(parent, i);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns whether this View type needs to handle laying out its own children instead of deferring
|
|
* to the standard css-layout algorithm. Returns true for the layout to *not* be automatically
|
|
* invoked. Instead onLayout will be invoked as normal and it is the View instance's
|
|
* responsibility to properly call layout on its children. Returns false for the default behavior
|
|
* of automatically laying out children without going through the ViewGroup's onLayout method. In
|
|
* that case, onLayout for this View type must *not* call layout on its children.
|
|
*/
|
|
@Override
|
|
public boolean needsCustomLayoutForChildren() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Returns whether or not this View type should promote its grandchildren as Views. This is an
|
|
* optimization for Scrollable containers when using Nodes, where instead of having one ViewGroup
|
|
* containing a large number of draw commands (and thus being more expensive in the case of an
|
|
* invalidate or re-draw), we split them up into several draw commands.
|
|
*/
|
|
public boolean shouldPromoteGrandchildren() {
|
|
return false;
|
|
}
|
|
}
|