* [android] fix box-shadow size should cover padding and border
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/46cdd0e0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/46cdd0e0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/46cdd0e0 Branch: refs/heads/master Commit: 46cdd0e0265368cd6b4eb13e6954c5e03c207736 Parents: ea2e12f Author: Yanjiie <[email protected]> Authored: Tue Apr 17 09:37:58 2018 +0800 Committer: Yanjiie <[email protected]> Committed: Tue Apr 17 09:37:58 2018 +0800 ---------------------------------------------------------------------- .../com/taobao/weex/ui/component/WXVContainer.java | 17 ++++++++++++++++- .../java/com/taobao/weex/utils/BoxShadowUtil.java | 6 ++++-- 2 files changed, 20 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/46cdd0e0/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java index 635b8e4..2bb4703 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java @@ -29,11 +29,13 @@ import android.util.Pair; import android.view.Menu; import android.view.View; import android.view.ViewGroup; +import android.widget.FrameLayout; import com.taobao.weex.WXSDKInstance; import com.taobao.weex.annotation.JSMethod; import com.taobao.weex.common.Constants; import com.taobao.weex.dom.WXDomObject; +import com.taobao.weex.dom.flex.Spacing; import com.taobao.weex.ui.view.WXImageView; import com.taobao.weex.utils.WXLogUtils; import com.taobao.weex.utils.WXUtils; @@ -596,7 +598,20 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> { if (mBoxShadowHost == null) { mBoxShadowHost = new BoxShadowHost(getContext()); WXViewUtils.setBackGround(mBoxShadowHost, null); - mBoxShadowHost.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + + Spacing padding = this.getDomObject().getPadding(); + Spacing border = this.getDomObject().getBorder(); + + int left = (int) (padding.get(Spacing.LEFT) + border.get(Spacing.LEFT)); + int top = (int) (padding.get(Spacing.TOP) + border.get(Spacing.TOP)); + int right = (int) (padding.get(Spacing.RIGHT) + border.get(Spacing.RIGHT)); + int bottom = (int) (padding.get(Spacing.BOTTOM) + border.get(Spacing.BOTTOM)); + + ViewGroup.MarginLayoutParams layoutParams = new ViewGroup.MarginLayoutParams(hostView.getLayoutParams()) ; + layoutParams.setMargins(-left, -top, -right, -bottom); + + mBoxShadowHost.setLayoutParams(layoutParams); + hostView.addView(mBoxShadowHost); } hostView.removeView(mBoxShadowHost); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/46cdd0e0/android/sdk/src/main/java/com/taobao/weex/utils/BoxShadowUtil.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/BoxShadowUtil.java b/android/sdk/src/main/java/com/taobao/weex/utils/BoxShadowUtil.java index b4adbb4..dba8b63 100644 --- a/android/sdk/src/main/java/com/taobao/weex/utils/BoxShadowUtil.java +++ b/android/sdk/src/main/java/com/taobao/weex/utils/BoxShadowUtil.java @@ -65,12 +65,12 @@ import java.util.regex.Pattern; public class BoxShadowUtil { private static final String TAG = "BoxShadowUtil"; - private static boolean sBoxShadowEnabled = false /*disable box-shadow temporary*/; + private static boolean sBoxShadowEnabled = true /*disable box-shadow temporary*/; private static Pattern sColorPattern; public static void setBoxShadowEnabled(boolean enabled) { - //sBoxShadowEnabled = enabled; + sBoxShadowEnabled = enabled; WXLogUtils.w(TAG, "Switch box-shadow status: " + enabled); } @@ -195,6 +195,8 @@ public class BoxShadowUtil { int h = target.getHeight(); int w = target.getWidth(); + ViewGroup.LayoutParams p = target.getLayoutParams(); + if (h == 0 || w == 0) { Log.w(TAG, "Target view is invisible, ignore set shadow."); return;
