Repository: incubator-weex Updated Branches: refs/heads/0.16-dev 96c52aec5 -> 20b0a434a
* [android] Fix the problem of NPE and AndroidViewWidget's layout Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/23ca407a Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/23ca407a Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/23ca407a Branch: refs/heads/0.16-dev Commit: 23ca407a5e3acd010240e24c0911bfd732041ea8 Parents: 878c3a9 Author: YorkShen <shenyua...@gmail.com> Authored: Mon Aug 28 15:11:17 2017 +0800 Committer: YorkShen <shenyua...@gmail.com> Committed: Wed Sep 13 16:54:07 2017 +0800 ---------------------------------------------------------------------- .../java/com/taobao/weex/ui/component/WXComponent.java | 12 ++++++++++-- .../main/java/com/taobao/weex/ui/component/WXDiv.java | 4 +++- .../java/com/taobao/weex/ui/component/list/WXCell.java | 4 +++- 3 files changed, 16 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/23ca407a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java index d183544..6f20d1d 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java @@ -494,11 +494,19 @@ public abstract class WXComponent<T extends View> implements IWXObject, IWXActi private void setWidgetParams(Widget widget, FlatGUIIContext UIImp, Point rawoffset, int width, int height, int left, int right, int top, int bottom) { - Point childOffset = new Point(rawoffset.x, rawoffset.y); + Point childOffset = new Point(); if (mParent != null) { if (mParent instanceof FlatComponent && UIImp.getFlatComponentAncestor(mParent) != null && UIImp.getAndroidViewWidget(mParent) == null) { + childOffset.set(rawoffset.x, rawoffset.y); + } else { + childOffset.set(left, top); + } + + if (mParent instanceof FlatComponent && + UIImp.getFlatComponentAncestor(mParent) != null && + UIImp.getAndroidViewWidget(mParent) == null) { Point parentLayoutOffset = ((FlatComponent) mParent).getOrCreateFlatWidget().getLocInFlatContainer(); childOffset.offset(parentLayoutOffset.x, parentLayoutOffset.y); } @@ -515,7 +523,7 @@ public abstract class WXComponent<T extends View> implements IWXObject, IWXActi } widget.setLayout(width, height, left, right, top, bottom, childOffset); - if (widget instanceof AndroidViewWidget) { + if (widget instanceof AndroidViewWidget && ((AndroidViewWidget) widget).getView()!=null) { //TODO generic method if ever possible setHostLayoutParams((T) ((AndroidViewWidget) widget).getView(), width, height, childOffset.x, right, childOffset.y, bottom); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/23ca407a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java index 18c734e..f533989 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java @@ -90,7 +90,9 @@ public class WXDiv extends WidgetContainer<WXFrameLayout> implements FlatCompone @Override protected void mountFlatGUI() { if (promoteToView(true)) { - getHostView().mountFlatGUI(widgets); + if(getHostView()!=null) { + getHostView().mountFlatGUI(widgets); + } } else { mWidgetGroup.replaceAll(widgets); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/23ca407a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java index cac3048..7981701 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java @@ -144,7 +144,9 @@ public class WXCell extends WidgetContainer<WXFrameLayout> { @Override protected void mountFlatGUI() { + if(getHostView()!=null) { getHostView().mountFlatGUI(widgets); + } } @Override @@ -155,6 +157,6 @@ public class WXCell extends WidgetContainer<WXFrameLayout> { @Override public boolean intendToBeFlatContainer() { //TODO Is it possible to remove the cell class judge - return getInstance().getFlatUIContext().isFlatUIEnabled() && WXCell.class.equals(getClass()); + return getInstance().getFlatUIContext().isFlatUIEnabled() && WXCell.class.equals(getClass()) && !isSticky(); } }