mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-08 22:42:05 +08:00
Reverted commit D3827366
Summary: This adds support for sticky headers on Android. The implementation if based primarily on the iOS one (https://github.com/facebook/react-native/blob/master/React/Views/RCTScrollView.m#L272) and adds some stuff that was missing to be able to handle z-index, view clipping, view hierarchy optimization and touch handling properly. Some notable changes: - Add `ChildDrawingOrderDelegate` interface to allow changing the `ViewGroup` drawing order using `ViewGroup#getChildDrawingOrder`. This is used to change the content view drawing order to make sure headers are drawn over the other cells. Right now I'm only reversing the drawing order as drawing only the header views last added a lot of complexity especially because of view clipping and I don't think it should cause issues. - Add `collapsableChildren` prop that works like `collapsable` but applies to every child of the view. This is needed to be able to reference sticky headers by their indices otherwise some subviews can get optimized out and break indexes. Closes https://github.com/facebook/react-native/pull/9456 Differential Revision: D3827366 Pulled By: fred2028 fbshipit-source-id: d346068734c5b987518794ab23e13914ed13b5c4
This commit is contained in:
committed by
Facebook Github Bot 3
parent
c1ed6ab4ed
commit
d0d1712851
@@ -5,7 +5,7 @@ package com.facebook.react.uimanager;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.ViewParent;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
@@ -56,8 +56,6 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
} else {
|
||||
setTransformProperty(view, matrix);
|
||||
}
|
||||
|
||||
updateClipping(view);
|
||||
}
|
||||
|
||||
@ReactProp(name = PROP_OPACITY, defaultFloat = 1.f)
|
||||
@@ -116,40 +114,30 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
@ReactProp(name = PROP_ROTATION)
|
||||
public void setRotation(T view, float rotation) {
|
||||
view.setRotation(rotation);
|
||||
|
||||
updateClipping(view);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ReactProp(name = PROP_SCALE_X, defaultFloat = 1f)
|
||||
public void setScaleX(T view, float scaleX) {
|
||||
view.setScaleX(scaleX);
|
||||
|
||||
updateClipping(view);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ReactProp(name = PROP_SCALE_Y, defaultFloat = 1f)
|
||||
public void setScaleY(T view, float scaleY) {
|
||||
view.setScaleY(scaleY);
|
||||
|
||||
updateClipping(view);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ReactProp(name = PROP_TRANSLATE_X, defaultFloat = 0f)
|
||||
public void setTranslateX(T view, float translateX) {
|
||||
view.setTranslationX(PixelUtil.toPixelFromDIP(translateX));
|
||||
|
||||
updateClipping(view);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ReactProp(name = PROP_TRANSLATE_Y, defaultFloat = 0f)
|
||||
public void setTranslateY(T view, float translateY) {
|
||||
view.setTranslationY(PixelUtil.toPixelFromDIP(translateY));
|
||||
|
||||
updateClipping(view);
|
||||
}
|
||||
|
||||
@ReactProp(name = PROP_ACCESSIBILITY_LIVE_REGION)
|
||||
@@ -188,11 +176,4 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
view.setScaleX(1);
|
||||
view.setScaleY(1);
|
||||
}
|
||||
|
||||
private static void updateClipping(View view) {
|
||||
ViewParent parent = view.getParent();
|
||||
if (parent instanceof ReactClippingViewGroup) {
|
||||
((ReactClippingViewGroup) parent).updateClippingRect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user