Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(android): fix gradient background support for CardView #11219

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
*/
package ti.modules.titanium.ui.widget;

import android.content.Context;
import android.support.v7.widget.CardView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import org.appcelerator.kroll.KrollDict;
import org.appcelerator.kroll.KrollProxy;
import org.appcelerator.kroll.common.Log;
Expand All @@ -14,20 +20,16 @@
import org.appcelerator.titanium.proxy.TiViewProxy;
import org.appcelerator.titanium.util.TiConvert;
import org.appcelerator.titanium.view.TiCompositeLayout;
import org.appcelerator.titanium.view.TiUIView;
import org.appcelerator.titanium.view.TiCompositeLayout.LayoutArrangement;

import android.content.Context;
import android.support.v7.widget.CardView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import org.appcelerator.titanium.view.TiGradientDrawable;
import org.appcelerator.titanium.view.TiUIView;

public class TiUICardView extends TiUIView
{
public int paddingLeft, paddingTop, paddingRight, paddingBottom;

private static final String TAG = "TiUICardView";
private final TiCardView cardView;

public class TiUICardViewLayout extends TiCompositeLayout
{
Expand Down Expand Up @@ -78,11 +80,21 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
public TiUICardView(final TiViewProxy proxy)
{
super(proxy);
LayoutArrangement arrangement = LayoutArrangement.DEFAULT;

// generate native view
if (this.nativeView == null) {
processProperties(getProxy().getProperties());
KrollDict d = proxy.getProperties();
if (d.containsKey(TiC.PROPERTY_LAYOUT) && d.getString(TiC.PROPERTY_LAYOUT).equals(TiC.LAYOUT_VERTICAL)) {
arrangement = LayoutArrangement.VERTICAL;
} else if (d.containsKey(TiC.PROPERTY_LAYOUT)
&& d.getString(TiC.PROPERTY_LAYOUT).equals(TiC.LAYOUT_HORIZONTAL)) {
arrangement = LayoutArrangement.HORIZONTAL;
}
// we create the view here
this.cardView = new TiCardView(proxy.getActivity(), arrangement);
this.cardView.setPadding(0, 0, 0, 0);
this.cardView.setFocusable(false);

setNativeView(cardView);
}

public TiUICardViewLayout getLayout()
Expand Down Expand Up @@ -137,81 +149,67 @@ public void processProperties(KrollDict d)
{
super.processProperties(d);

// we create the view here
View view = null;
LayoutArrangement arrangement = LayoutArrangement.DEFAULT;

if (d.containsKey(TiC.PROPERTY_LAYOUT) && d.getString(TiC.PROPERTY_LAYOUT).equals(TiC.LAYOUT_VERTICAL)) {
arrangement = LayoutArrangement.VERTICAL;
} else if (d.containsKey(TiC.PROPERTY_LAYOUT)
&& d.getString(TiC.PROPERTY_LAYOUT).equals(TiC.LAYOUT_HORIZONTAL)) {
arrangement = LayoutArrangement.HORIZONTAL;
}

view = new TiCardView(getProxy().getActivity(), arrangement);
view.setPadding(0, 0, 0, 0);
view.setFocusable(false);
TiCardView cardview = (TiCardView) view;

if (d.containsKey(TiC.PROPERTY_BACKGROUND_COLOR)) {
cardview.setCardBackgroundColor(TiConvert.toColor(d, TiC.PROPERTY_BACKGROUND_COLOR));
if (d.containsKeyAndNotNull(TiC.PROPERTY_BACKGROUND_GRADIENT)) {
TiGradientDrawable tiGradientDrawable =
new TiGradientDrawable(this.cardView, d.getKrollDict(TiC.PROPERTY_BACKGROUND_GRADIENT));
this.cardView.setBackground(tiGradientDrawable);
}

if (d.containsKey(TiC.PROPERTY_BORDER_RADIUS)) {
float radius = 0;
TiDimension radiusDim = TiConvert.toTiDimension(d.get(TiC.PROPERTY_BORDER_RADIUS), TiDimension.TYPE_WIDTH);
if (radiusDim != null) {
radius = (float) radiusDim.getPixels(cardview);
radius = (float) radiusDim.getPixels(getNativeView());
}
cardview.setRadius(radius);
this.cardView.setRadius(radius);
}

if (d.containsKey(TiC.PROPERTY_USE_COMPAT_PADDING)) {
cardview.setUseCompatPadding(TiConvert.toBoolean(d, TiC.PROPERTY_USE_COMPAT_PADDING, false));
this.cardView.setUseCompatPadding(TiConvert.toBoolean(d, TiC.PROPERTY_USE_COMPAT_PADDING, false));
}

if (d.containsKey(TiC.PROPERTY_ELEVATION)) {
cardview.setCardElevation(TiConvert.toFloat(d.get(TiC.PROPERTY_ELEVATION)));
this.cardView.setCardElevation(TiConvert.toFloat(d.get(TiC.PROPERTY_ELEVATION)));
}

if (d.containsKey(TiC.PROPERTY_MAX_ELEVATION)) {
cardview.setMaxCardElevation(TiConvert.toFloat(d.get(TiC.PROPERTY_MAX_ELEVATION)));
this.cardView.setMaxCardElevation(TiConvert.toFloat(d.get(TiC.PROPERTY_MAX_ELEVATION)));
}

if (d.containsKey(TiC.PROPERTY_PREVENT_CORNER_OVERLAP)) {
cardview.setPreventCornerOverlap(TiConvert.toBoolean(d, TiC.PROPERTY_PREVENT_CORNER_OVERLAP, false));
this.cardView.setPreventCornerOverlap(TiConvert.toBoolean(d, TiC.PROPERTY_PREVENT_CORNER_OVERLAP, false));
}

if (d.containsKey(TiC.PROPERTY_PADDING)) {
float radiusRight = 0;
TiDimension radiusDimRight =
TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_PADDING)), TiDimension.TYPE_RIGHT);
if (radiusDimRight != null) {
radiusRight = (float) radiusDimRight.getPixels(cardview);
radiusRight = (float) radiusDimRight.getPixels(this.cardView);
}
paddingRight = (int) radiusRight;

float radiusBottom = 0;
TiDimension radiusDimBottom =
TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_PADDING)), TiDimension.TYPE_BOTTOM);
if (radiusDimBottom != null) {
radiusBottom = (float) radiusDimBottom.getPixels(cardview);
radiusBottom = (float) radiusDimBottom.getPixels(this.cardView);
}
paddingBottom = (int) radiusBottom;

float radiusLeft = 0;
TiDimension radiusDimLeft =
TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_PADDING)), TiDimension.TYPE_LEFT);
if (radiusDimLeft != null) {
radiusLeft = (float) radiusDimLeft.getPixels(cardview);
radiusLeft = (float) radiusDimLeft.getPixels(this.cardView);
}
paddingLeft = (int) radiusLeft;

float radiusTop = 0;
TiDimension radiusDimTop =
TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_PADDING)), TiDimension.TYPE_TOP);
if (radiusDimTop != null) {
radiusTop = (float) radiusDimTop.getPixels(cardview);
radiusTop = (float) radiusDimTop.getPixels(this.cardView);
}
paddingTop = (int) radiusTop;
}
Expand All @@ -221,7 +219,7 @@ public void processProperties(KrollDict d)
TiDimension radiusDimBottom = TiConvert.toTiDimension(
TiConvert.toString(d.get(TiC.PROPERTY_PADDING_BOTTOM)), TiDimension.TYPE_BOTTOM);
if (radiusDimBottom != null) {
radiusBottom = (float) radiusDimBottom.getPixels(cardview);
radiusBottom = (float) radiusDimBottom.getPixels(this.cardView);
}
paddingBottom = (int) radiusBottom;
}
Expand All @@ -231,7 +229,7 @@ public void processProperties(KrollDict d)
TiDimension radiusDimLeft =
TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_PADDING_LEFT)), TiDimension.TYPE_LEFT);
if (radiusDimLeft != null) {
radiusLeft = (float) radiusDimLeft.getPixels(cardview);
radiusLeft = (float) radiusDimLeft.getPixels(this.cardView);
}
paddingLeft = (int) radiusLeft;
}
Expand All @@ -241,7 +239,7 @@ public void processProperties(KrollDict d)
TiDimension radiusDimRight =
TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_PADDING_RIGHT)), TiDimension.TYPE_RIGHT);
if (radiusDimRight != null) {
radiusRight = (float) radiusDimRight.getPixels(cardview);
radiusRight = (float) radiusDimRight.getPixels(this.cardView);
}
paddingRight = (int) radiusRight;
}
Expand All @@ -251,14 +249,12 @@ public void processProperties(KrollDict d)
TiDimension radiusDimTop =
TiConvert.toTiDimension(TiConvert.toString(d.get(TiC.PROPERTY_PADDING_TOP)), TiDimension.TYPE_TOP);
if (radiusDimTop != null) {
radiusTop = (float) radiusDimTop.getPixels(cardview);
radiusTop = (float) radiusDimTop.getPixels(this.cardView);
}
paddingTop = (int) radiusTop;
}

cardview.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);

setNativeView(view);
this.cardView.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
}

@Override
Expand Down
14 changes: 13 additions & 1 deletion apidoc/Titanium/UI/Android/CardView.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ description: |
CardView does not support <Titanium.UI.View.backgroundImage>, <Titanium.UI.View.borderColor>, or <Titanium.UI.View.backgroundGradient>.
extends: Titanium.UI.View
excludes:
properties: [backgroundImage, backgroundRepeat, borderColor, backgroundGradient]
properties: [backgroundImage, backgroundRepeat, borderColor, backgroundDisabledColor, backgroundSelectedColor,
backgroundFocusedColor, backgroundDisabledImage, backgroundSelectedImage, backgroundFocusedImage]
since: "5.1.0"
platforms: [android]

Expand All @@ -31,6 +32,7 @@ properties:
type: String
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.backgroundColor](Titanium.UI.Android.CardView.backgroundColor) instead.

- name: backgroundColor
Expand All @@ -45,6 +47,7 @@ properties:
type: Number
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.borderRadius](Titanium.UI.Android.CardView.borderRadius) instead.

- name: borderRadius
Expand All @@ -57,6 +60,7 @@ properties:
type: Number
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.elevation](Titanium.UI.Android.CardView.elevation) instead.

- name: elevation
Expand All @@ -70,6 +74,7 @@ properties:
availability: creation
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.maxElevation](Titanium.UI.Android.CardView.maxElevation) instead.

- name: maxElevation
Expand All @@ -86,6 +91,7 @@ properties:
default: false
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.preventCornerOverlap](Titanium.UI.Android.CardView.preventCornerOverlap) instead.

- name: preventCornerOverlap
Expand All @@ -102,6 +108,7 @@ properties:
default: false
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.useCompatPadding](Titanium.UI.Android.CardView.useCompatPadding) instead.

- name: useCompatPadding
Expand All @@ -115,6 +122,7 @@ properties:
type: Number
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.padding](Titanium.UI.Android.CardView.padding) instead.

- name: padding
Expand All @@ -127,6 +135,7 @@ properties:
type: Number
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.paddingBottom](Titanium.UI.Android.CardView.paddingBottom) instead.

- name: paddingBottom
Expand All @@ -139,6 +148,7 @@ properties:
type: Number
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.paddingLeft](Titanium.UI.Android.CardView.paddingLeft) instead.

- name: paddingLeft
Expand All @@ -151,6 +161,7 @@ properties:
type: Number
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.paddingRight](Titanium.UI.Android.CardView.paddingRight) instead.

- name: paddingRight
Expand All @@ -163,6 +174,7 @@ properties:
type: Number
deprecated:
since: 5.1.2
removed: 6.0.0
notes: Use [Titanium.UI.Android.CardView.paddingTop](Titanium.UI.Android.CardView.paddingTop) instead.

- name: paddingTop
Expand Down