From dc3b279573ece7f9d137f6b98d52fefd67b07b92 Mon Sep 17 00:00:00 2001 From: Joshua Quick Date: Fri, 19 Feb 2021 21:36:35 -0800 Subject: [PATCH] feat(android): add outlined CardView support --- .../titanium/ui/widget/TiUICardView.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUICardView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUICardView.java index a055f96afb7..d3219a20d06 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUICardView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUICardView.java @@ -157,6 +157,10 @@ public void processProperties(KrollDict d) cardview.setCardBackgroundColor(TiConvert.toColor(d, TiC.PROPERTY_BACKGROUND_COLOR)); } + if (d.containsKey(TiC.PROPERTY_BORDER_COLOR)) { + cardview.setStrokeColor(TiConvert.toColor(d, TiC.PROPERTY_BORDER_COLOR)); + } + if (d.containsKey(TiC.PROPERTY_BORDER_RADIUS)) { float radius = 0; TiDimension radiusDim = TiConvert.toTiDimension(d.get(TiC.PROPERTY_BORDER_RADIUS), TiDimension.TYPE_WIDTH); @@ -166,6 +170,12 @@ public void processProperties(KrollDict d) cardview.setRadius(radius); } + if (d.containsKey(TiC.PROPERTY_BORDER_WIDTH)) { + TiDimension tiDimension = + TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_BORDER_WIDTH)), TiDimension.TYPE_WIDTH); + cardview.setStrokeWidth(tiDimension.getAsPixels(cardview)); + } + if (d.containsKey(TiC.PROPERTY_USE_COMPAT_PADDING)) { cardview.setUseCompatPadding(TiConvert.toBoolean(d, TiC.PROPERTY_USE_COMPAT_PADDING, false)); } @@ -273,6 +283,8 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP if (key.equals(TiC.PROPERTY_BACKGROUND_COLOR)) { cardview.setCardBackgroundColor(TiConvert.toColor(TiConvert.toString(newValue))); cardview.requestLayout(); + } else if (key.equals(TiC.PROPERTY_BORDER_COLOR)) { + cardview.setStrokeColor(TiConvert.toColor(TiConvert.toString(newValue))); } else if (key.equals(TiC.PROPERTY_BORDER_RADIUS)) { float radius = 0; TiDimension radiusDim = TiConvert.toTiDimension(newValue, TiDimension.TYPE_WIDTH); @@ -281,6 +293,9 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP } cardview.setRadius(radius); cardview.requestLayout(); + } else if (key.equals(TiC.PROPERTY_BORDER_WIDTH)) { + TiDimension tiDimension = TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_WIDTH); + cardview.setStrokeWidth(tiDimension.getAsPixels(cardview)); } else if (key.equals(TiC.PROPERTY_ELEVATION)) { cardview.setCardElevation(TiConvert.toFloat(newValue)); cardview.requestLayout(); @@ -367,6 +382,8 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP @Override protected boolean hasBorder(KrollDict d) { + // This prevents "TiUIView" class from handling the border. + // We apply border properties to CardView ourselves via its stroke methods. return false; } }