Showing
9 changed files
with
121 additions
and
54 deletions
| ... | @@ -16,6 +16,7 @@ import ly.warp.sdk.io.adapters.OfferAdapter; | ... | @@ -16,6 +16,7 @@ import ly.warp.sdk.io.adapters.OfferAdapter; | 
| 16 | import ly.warp.sdk.io.models.DummyDataProvider; | 16 | import ly.warp.sdk.io.models.DummyDataProvider; | 
| 17 | import ly.warp.sdk.io.models.OfferCategory; | 17 | import ly.warp.sdk.io.models.OfferCategory; | 
| 18 | import ly.warp.sdk.io.models.OfferItem; | 18 | import ly.warp.sdk.io.models.OfferItem; | 
| 19 | +import ly.warp.sdk.utils.WarpUtils; | ||
| 19 | import ly.warp.sdk.utils.WarplyManagerHelper; | 20 | import ly.warp.sdk.utils.WarplyManagerHelper; | 
| 20 | import ly.warp.sdk.views.HorizontalSpaceItemDecoration; | 21 | import ly.warp.sdk.views.HorizontalSpaceItemDecoration; | 
| 21 | 22 | ||
| ... | @@ -62,6 +63,9 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | ... | @@ -62,6 +63,9 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | 
| 62 | private RecyclerView mRvPurchases; | 63 | private RecyclerView mRvPurchases; | 
| 63 | private OfferAdapter mPurchasesAdapter; | 64 | private OfferAdapter mPurchasesAdapter; | 
| 64 | 65 | ||
| 66 | + private TextView mTvAllOffers, mTvAllFavorites, mTvAllViability, mTvAllFamily, | ||
| 67 | + mTvAllCoffee, mTvAllTravelling, mTvAllKids, mTvAllPurchases; | ||
| 68 | + | ||
| 65 | // =========================================================== | 69 | // =========================================================== | 
| 66 | // Methods for/from SuperClass/Interfaces | 70 | // Methods for/from SuperClass/Interfaces | 
| 67 | // =========================================================== | 71 | // =========================================================== | 
| ... | @@ -120,34 +124,49 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | ... | @@ -120,34 +124,49 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | 
| 120 | // Initialize Top Offers section | 124 | // Initialize Top Offers section | 
| 121 | mTvCategoryTopOffers = findViewById(R.id.tv_recycler_category1); | 125 | mTvCategoryTopOffers = findViewById(R.id.tv_recycler_category1); | 
| 122 | mRvTopOffers = findViewById(R.id.rl_recycler1); | 126 | mRvTopOffers = findViewById(R.id.rl_recycler1); | 
| 127 | + mTvAllOffers = findViewById(R.id.tv_recycler_all1); | ||
| 123 | 128 | ||
| 124 | // Initialize Favorites section | 129 | // Initialize Favorites section | 
| 125 | mTvCategoryFavorites = findViewById(R.id.tv_recycler_category2); | 130 | mTvCategoryFavorites = findViewById(R.id.tv_recycler_category2); | 
| 126 | mRvFavorites = findViewById(R.id.rl_recycler2); | 131 | mRvFavorites = findViewById(R.id.rl_recycler2); | 
| 132 | + mTvAllFavorites = findViewById(R.id.tv_recycler_all2); | ||
| 127 | 133 | ||
| 128 | // Initialize Viability section | 134 | // Initialize Viability section | 
| 129 | mTvCategoryViability = findViewById(R.id.tv_recycler_category3); | 135 | mTvCategoryViability = findViewById(R.id.tv_recycler_category3); | 
| 130 | mRvViability = findViewById(R.id.rl_recycler3); | 136 | mRvViability = findViewById(R.id.rl_recycler3); | 
| 137 | + mTvAllViability = findViewById(R.id.tv_recycler_all3); | ||
| 131 | 138 | ||
| 132 | // Initialize Family section | 139 | // Initialize Family section | 
| 133 | mTvCategoryFamily = findViewById(R.id.tv_recycler_category4); | 140 | mTvCategoryFamily = findViewById(R.id.tv_recycler_category4); | 
| 134 | mRvFamily = findViewById(R.id.rl_recycler4); | 141 | mRvFamily = findViewById(R.id.rl_recycler4); | 
| 142 | + mTvAllFamily = findViewById(R.id.tv_recycler_all4); | ||
| 135 | 143 | ||
| 136 | // Initialize Food & Coffee section | 144 | // Initialize Food & Coffee section | 
| 137 | mTvCategoryFoodCoffee = findViewById(R.id.tv_recycler_category5); | 145 | mTvCategoryFoodCoffee = findViewById(R.id.tv_recycler_category5); | 
| 138 | mRvFoodCoffee = findViewById(R.id.rl_recycler5); | 146 | mRvFoodCoffee = findViewById(R.id.rl_recycler5); | 
| 147 | + mTvAllCoffee = findViewById(R.id.tv_recycler_all5); | ||
| 139 | 148 | ||
| 140 | // Initialize Travelling section | 149 | // Initialize Travelling section | 
| 141 | mTvCategoryTravelling = findViewById(R.id.tv_recycler_category6); | 150 | mTvCategoryTravelling = findViewById(R.id.tv_recycler_category6); | 
| 142 | mRvTravelling = findViewById(R.id.rl_recycler6); | 151 | mRvTravelling = findViewById(R.id.rl_recycler6); | 
| 152 | + mTvAllTravelling = findViewById(R.id.tv_recycler_all6); | ||
| 143 | 153 | ||
| 144 | // Initialize Kids section | 154 | // Initialize Kids section | 
| 145 | mTvCategoryKids = findViewById(R.id.tv_recycler_category7); | 155 | mTvCategoryKids = findViewById(R.id.tv_recycler_category7); | 
| 146 | mRvKids = findViewById(R.id.rl_recycler7); | 156 | mRvKids = findViewById(R.id.rl_recycler7); | 
| 157 | + mTvAllKids = findViewById(R.id.tv_recycler_all7); | ||
| 147 | 158 | ||
| 148 | // Initialize Purchases section | 159 | // Initialize Purchases section | 
| 149 | mTvCategoryPurchases = findViewById(R.id.tv_recycler_category8); | 160 | mTvCategoryPurchases = findViewById(R.id.tv_recycler_category8); | 
| 150 | mRvPurchases = findViewById(R.id.rl_recycler8); | 161 | mRvPurchases = findViewById(R.id.rl_recycler8); | 
| 162 | + mTvAllPurchases = findViewById(R.id.tv_recycler_all8); | ||
| 163 | + | ||
| 164 | + WarpUtils.renderCustomFont(this, R.font.ping_lcg_bold, mTvCategoryTopOffers, | ||
| 165 | + mTvCategoryFavorites, mTvCategoryViability, mTvCategoryFamily, mTvCategoryFoodCoffee, | ||
| 166 | + mTvCategoryTravelling, mTvCategoryKids, mTvCategoryPurchases); | ||
| 167 | + | ||
| 168 | + WarpUtils.renderCustomFont(this, R.font.ping_lcg_regular, mTvAllOffers, mTvAllFavorites, | ||
| 169 | + mTvAllViability, mTvAllFamily, mTvAllCoffee, mTvAllTravelling, mTvAllKids, mTvAllPurchases); | ||
| 151 | } | 170 | } | 
| 152 | 171 | ||
| 153 | /** | 172 | /** | ... | ... | 
| ... | @@ -5,8 +5,11 @@ import android.content.ClipData; | ... | @@ -5,8 +5,11 @@ import android.content.ClipData; | 
| 5 | import android.content.ClipboardManager; | 5 | import android.content.ClipboardManager; | 
| 6 | import android.content.Context; | 6 | import android.content.Context; | 
| 7 | import android.content.Intent; | 7 | import android.content.Intent; | 
| 8 | +import android.graphics.Color; | ||
| 9 | +import android.os.Build; | ||
| 8 | import android.os.Bundle; | 10 | import android.os.Bundle; | 
| 9 | import android.view.View; | 11 | import android.view.View; | 
| 12 | +import android.view.WindowInsetsController; | ||
| 10 | import android.widget.ImageView; | 13 | import android.widget.ImageView; | 
| 11 | import android.widget.LinearLayout; | 14 | import android.widget.LinearLayout; | 
| 12 | import android.widget.TextView; | 15 | import android.widget.TextView; | 
| ... | @@ -14,6 +17,7 @@ import android.widget.Toast; | ... | @@ -14,6 +17,7 @@ import android.widget.Toast; | 
| 14 | 17 | ||
| 15 | import ly.warp.sdk.R; | 18 | import ly.warp.sdk.R; | 
| 16 | import ly.warp.sdk.io.models.OfferItem; | 19 | import ly.warp.sdk.io.models.OfferItem; | 
| 20 | +import ly.warp.sdk.utils.WarpUtils; | ||
| 17 | 21 | ||
| 18 | public class SingleCouponActivity extends Activity implements View.OnClickListener { | 22 | public class SingleCouponActivity extends Activity implements View.OnClickListener { | 
| 19 | // =========================================================== | 23 | // =========================================================== | 
| ... | @@ -27,17 +31,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -27,17 +31,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 27 | 31 | ||
| 28 | private ImageView mIvBack; | 32 | private ImageView mIvBack; | 
| 29 | private OfferItem mOfferItem; | 33 | private OfferItem mOfferItem; | 
| 30 | - private TextView mTvTitle, mTvSmallDescription; | 34 | + private TextView mTvSmallDescription; | 
| 31 | - private TextView mTvDescription; | ||
| 32 | private TextView mTvFullDescription; | 35 | private TextView mTvFullDescription; | 
| 33 | private TextView mTvEndDate; | 36 | private TextView mTvEndDate; | 
| 34 | private TextView mTvValue; | 37 | private TextView mTvValue; | 
| 35 | private TextView mTvMoreButton; | 38 | private TextView mTvMoreButton; | 
| 36 | private ImageView mIvImage; | 39 | private ImageView mIvImage; | 
| 37 | - | 40 | + | 
| 38 | private String mFullDescriptionText; | 41 | private String mFullDescriptionText; | 
| 39 | private boolean mIsDescriptionExpanded = false; | 42 | private boolean mIsDescriptionExpanded = false; | 
| 40 | - | 43 | + | 
| 41 | // Coupon code section | 44 | // Coupon code section | 
| 42 | private LinearLayout mCouponCodeContainer; | 45 | private LinearLayout mCouponCodeContainer; | 
| 43 | private LinearLayout mCouponCodeHeader; | 46 | private LinearLayout mCouponCodeHeader; | 
| ... | @@ -45,16 +48,18 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -45,16 +48,18 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 45 | private ImageView mIvCouponArrow; | 48 | private ImageView mIvCouponArrow; | 
| 46 | private ImageView mIvCopyCode; | 49 | private ImageView mIvCopyCode; | 
| 47 | private TextView mTvCouponCode; | 50 | private TextView mTvCouponCode; | 
| 51 | + private TextView mTvCouponCodeTitle; | ||
| 48 | private boolean mIsCouponCodeExpanded = false; | 52 | private boolean mIsCouponCodeExpanded = false; | 
| 49 | - | 53 | + | 
| 50 | // QR code section | 54 | // QR code section | 
| 51 | private LinearLayout mQrCodeContainer; | 55 | private LinearLayout mQrCodeContainer; | 
| 52 | private LinearLayout mQrCodeHeader; | 56 | private LinearLayout mQrCodeHeader; | 
| 53 | private LinearLayout mQrCodeContent; | 57 | private LinearLayout mQrCodeContent; | 
| 54 | private ImageView mIvQrArrow; | 58 | private ImageView mIvQrArrow; | 
| 55 | private ImageView mIvQrCode; | 59 | private ImageView mIvQrCode; | 
| 60 | + private TextView mTvQrCodeTitle; | ||
| 56 | private boolean mIsQrCodeExpanded = false; | 61 | private boolean mIsQrCodeExpanded = false; | 
| 57 | - | 62 | + | 
| 58 | // Terms of Use section | 63 | // Terms of Use section | 
| 59 | private LinearLayout mTermsContainer; | 64 | private LinearLayout mTermsContainer; | 
| 60 | private LinearLayout mTermsHeader; | 65 | private LinearLayout mTermsHeader; | 
| ... | @@ -63,6 +68,8 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -63,6 +68,8 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 63 | private TextView mTvTermsText; | 68 | private TextView mTvTermsText; | 
| 64 | private boolean mIsTermsExpanded = false; | 69 | private boolean mIsTermsExpanded = false; | 
| 65 | 70 | ||
| 71 | + private TextView mTvHeaderTitle, mTvTermsTitle, mTvShopsTitle, mTvWebsiteTitle, mTVMoreTitle; | ||
| 72 | + | ||
| 66 | 73 | ||
| 67 | // =========================================================== | 74 | // =========================================================== | 
| 68 | // Methods for/from SuperClass/Interfaces | 75 | // Methods for/from SuperClass/Interfaces | 
| ... | @@ -72,6 +79,9 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -72,6 +79,9 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 72 | public void onCreate(Bundle savedInstanceState) { | 79 | public void onCreate(Bundle savedInstanceState) { | 
| 73 | super.onCreate(savedInstanceState); | 80 | super.onCreate(savedInstanceState); | 
| 74 | setContentView(R.layout.activity_single_coupon); | 81 | setContentView(R.layout.activity_single_coupon); | 
| 82 | + | ||
| 83 | + // Setup white status bar | ||
| 84 | + setupStatusBar(); | ||
| 75 | 85 | ||
| 76 | // Get offer item from intent | 86 | // Get offer item from intent | 
| 77 | Intent intent = getIntent(); | 87 | Intent intent = getIntent(); | 
| ... | @@ -81,6 +91,32 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -81,6 +91,32 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 81 | 91 | ||
| 82 | initViews(); | 92 | initViews(); | 
| 83 | } | 93 | } | 
| 94 | + | ||
| 95 | + /** | ||
| 96 | + * Sets up the status bar to be white with dark icons | ||
| 97 | + */ | ||
| 98 | + private void setupStatusBar() { | ||
| 99 | + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | ||
| 100 | + // API 30+ | ||
| 101 | + WindowInsetsController controller = getWindow().getInsetsController(); | ||
| 102 | + if (controller != null) { | ||
| 103 | + controller.setSystemBarsAppearance( | ||
| 104 | + WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, | ||
| 105 | + WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS | ||
| 106 | + ); | ||
| 107 | + } | ||
| 108 | + getWindow().setStatusBarColor(Color.WHITE); | ||
| 109 | + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | ||
| 110 | + // API 23+ | ||
| 111 | + getWindow().getDecorView().setSystemUiVisibility( | ||
| 112 | + View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | ||
| 113 | + ); | ||
| 114 | + getWindow().setStatusBarColor(Color.WHITE); | ||
| 115 | + } else { | ||
| 116 | + // For older versions, just set a light gray color | ||
| 117 | + getWindow().setStatusBarColor(Color.parseColor("#F5F5F5")); | ||
| 118 | + } | ||
| 119 | + } | ||
| 84 | 120 | ||
| 85 | @Override | 121 | @Override | 
| 86 | public void onResume() { | 122 | public void onResume() { | 
| ... | @@ -102,7 +138,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -102,7 +138,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 102 | mTvValue = findViewById(R.id.tv_coupon_value); | 138 | mTvValue = findViewById(R.id.tv_coupon_value); | 
| 103 | mIvImage = findViewById(R.id.iv_coupon_image); | 139 | mIvImage = findViewById(R.id.iv_coupon_image); | 
| 104 | mTvMoreButton = findViewById(R.id.tv_more_button); | 140 | mTvMoreButton = findViewById(R.id.tv_more_button); | 
| 105 | - | 141 | + | 
| 106 | // Initialize coupon code section | 142 | // Initialize coupon code section | 
| 107 | mCouponCodeContainer = findViewById(R.id.coupon_code_container); | 143 | mCouponCodeContainer = findViewById(R.id.coupon_code_container); | 
| 108 | mCouponCodeHeader = findViewById(R.id.coupon_code_header); | 144 | mCouponCodeHeader = findViewById(R.id.coupon_code_header); | 
| ... | @@ -110,14 +146,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -110,14 +146,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 110 | mIvCouponArrow = findViewById(R.id.iv_coupon_arrow); | 146 | mIvCouponArrow = findViewById(R.id.iv_coupon_arrow); | 
| 111 | mIvCopyCode = findViewById(R.id.iv_copy_code); | 147 | mIvCopyCode = findViewById(R.id.iv_copy_code); | 
| 112 | mTvCouponCode = findViewById(R.id.tv_coupon_code); | 148 | mTvCouponCode = findViewById(R.id.tv_coupon_code); | 
| 113 | - | 149 | + mTvCouponCodeTitle = findViewById(R.id.tv_coupon_code_title); | 
| 150 | + | ||
| 114 | // Initialize QR code section | 151 | // Initialize QR code section | 
| 115 | mQrCodeContainer = findViewById(R.id.qr_code_container); | 152 | mQrCodeContainer = findViewById(R.id.qr_code_container); | 
| 116 | mQrCodeHeader = findViewById(R.id.qr_code_header); | 153 | mQrCodeHeader = findViewById(R.id.qr_code_header); | 
| 117 | mQrCodeContent = findViewById(R.id.qr_code_content); | 154 | mQrCodeContent = findViewById(R.id.qr_code_content); | 
| 118 | mIvQrArrow = findViewById(R.id.iv_qr_arrow); | 155 | mIvQrArrow = findViewById(R.id.iv_qr_arrow); | 
| 119 | mIvQrCode = findViewById(R.id.iv_qr_code); | 156 | mIvQrCode = findViewById(R.id.iv_qr_code); | 
| 120 | - | 157 | + mTvQrCodeTitle = findViewById(R.id.tv_qr_code_title); | 
| 158 | + | ||
| 121 | // Initialize Terms of Use section | 159 | // Initialize Terms of Use section | 
| 122 | mTermsContainer = findViewById(R.id.terms_container); | 160 | mTermsContainer = findViewById(R.id.terms_container); | 
| 123 | mTermsHeader = findViewById(R.id.terms_header); | 161 | mTermsHeader = findViewById(R.id.terms_header); | 
| ... | @@ -125,15 +163,28 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -125,15 +163,28 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 125 | mIvTermsArrow = findViewById(R.id.iv_terms_arrow); | 163 | mIvTermsArrow = findViewById(R.id.iv_terms_arrow); | 
| 126 | mTvTermsText = findViewById(R.id.tv_terms_text); | 164 | mTvTermsText = findViewById(R.id.tv_terms_text); | 
| 127 | 165 | ||
| 166 | + mTvHeaderTitle = findViewById(R.id.tv_header_title); | ||
| 167 | + mTvTermsTitle = findViewById(R.id.tv_terms_title); | ||
| 168 | + mTvShopsTitle = findViewById(R.id.tv_shops_title); | ||
| 169 | + mTvWebsiteTitle = findViewById(R.id.tv_website_title); | ||
| 170 | + mTVMoreTitle = findViewById(R.id.tv_more_title); | ||
| 171 | + | ||
| 172 | + WarpUtils.renderCustomFont(this, R.font.ping_lcg_bold, mTvHeaderTitle, mTvValue, | ||
| 173 | + mTvCouponCode, mTvTermsTitle, mTvShopsTitle, mTvWebsiteTitle); | ||
| 174 | + | ||
| 175 | + WarpUtils.renderCustomFont(this, R.font.ping_lcg_regular, mTvSmallDescription, | ||
| 176 | + mTvEndDate, mTvFullDescription, mTvCouponCodeTitle, mTvQrCodeTitle, mTvTermsText, | ||
| 177 | + mTVMoreTitle, mTvMoreButton); | ||
| 178 | + | ||
| 128 | // Populate views with offer data | 179 | // Populate views with offer data | 
| 129 | if (mOfferItem != null) { | 180 | if (mOfferItem != null) { | 
| 130 | mTvValue.setText(mOfferItem.getValue()); | 181 | mTvValue.setText(mOfferItem.getValue()); | 
| 131 | mTvSmallDescription.setText(mOfferItem.getDescription()); | 182 | mTvSmallDescription.setText(mOfferItem.getDescription()); | 
| 132 | - | 183 | + | 
| 133 | // Store the full description text | 184 | // Store the full description text | 
| 134 | mFullDescriptionText = mOfferItem.getFullDescription(); | 185 | mFullDescriptionText = mOfferItem.getFullDescription(); | 
| 135 | mTvFullDescription.setText(mFullDescriptionText); | 186 | mTvFullDescription.setText(mFullDescriptionText); | 
| 136 | - | 187 | + | 
| 137 | // Format and set the end date | 188 | // Format and set the end date | 
| 138 | String endDate = mOfferItem.getEndDate(); | 189 | String endDate = mOfferItem.getEndDate(); | 
| 139 | if (endDate != null && !endDate.isEmpty()) { | 190 | if (endDate != null && !endDate.isEmpty()) { | 
| ... | @@ -152,21 +203,21 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -152,21 +203,21 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 152 | if (imageResId != 0) { | 203 | if (imageResId != 0) { | 
| 153 | mIvImage.setImageResource(imageResId); | 204 | mIvImage.setImageResource(imageResId); | 
| 154 | } | 205 | } | 
| 155 | - | 206 | + | 
| 156 | // Setup the More button | 207 | // Setup the More button | 
| 157 | setupMoreButton(); | 208 | setupMoreButton(); | 
| 158 | - | 209 | + | 
| 159 | // Setup coupon code section | 210 | // Setup coupon code section | 
| 160 | setupCouponCodeSection(); | 211 | setupCouponCodeSection(); | 
| 161 | - | 212 | + | 
| 162 | // Setup QR code section | 213 | // Setup QR code section | 
| 163 | setupQrCodeSection(); | 214 | setupQrCodeSection(); | 
| 164 | - | 215 | + | 
| 165 | // Setup Terms of Use section | 216 | // Setup Terms of Use section | 
| 166 | setupTermsSection(); | 217 | setupTermsSection(); | 
| 167 | } | 218 | } | 
| 168 | } | 219 | } | 
| 169 | - | 220 | + | 
| 170 | /** | 221 | /** | 
| 171 | * Sets up the coupon code expandable section | 222 | * Sets up the coupon code expandable section | 
| 172 | */ | 223 | */ | 
| ... | @@ -179,7 +230,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -179,7 +230,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 179 | couponCode = "coupon_" + mOfferItem.getId().toLowerCase(); | 230 | couponCode = "coupon_" + mOfferItem.getId().toLowerCase(); | 
| 180 | } | 231 | } | 
| 181 | mTvCouponCode.setText(couponCode); | 232 | mTvCouponCode.setText(couponCode); | 
| 182 | - | 233 | + | 
| 183 | // Set click listener for the header to expand/collapse | 234 | // Set click listener for the header to expand/collapse | 
| 184 | mCouponCodeHeader.setOnClickListener(new View.OnClickListener() { | 235 | mCouponCodeHeader.setOnClickListener(new View.OnClickListener() { | 
| 185 | @Override | 236 | @Override | 
| ... | @@ -187,7 +238,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -187,7 +238,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 187 | toggleCouponCodeExpansion(); | 238 | toggleCouponCodeExpansion(); | 
| 188 | } | 239 | } | 
| 189 | }); | 240 | }); | 
| 190 | - | 241 | + | 
| 191 | // Set click listener for the entire container as well | 242 | // Set click listener for the entire container as well | 
| 192 | mCouponCodeContainer.setOnClickListener(new View.OnClickListener() { | 243 | mCouponCodeContainer.setOnClickListener(new View.OnClickListener() { | 
| 193 | @Override | 244 | @Override | 
| ... | @@ -195,7 +246,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -195,7 +246,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 195 | toggleCouponCodeExpansion(); | 246 | toggleCouponCodeExpansion(); | 
| 196 | } | 247 | } | 
| 197 | }); | 248 | }); | 
| 198 | - | 249 | + | 
| 199 | // Set click listener for the copy button | 250 | // Set click listener for the copy button | 
| 200 | mIvCopyCode.setOnClickListener(new View.OnClickListener() { | 251 | mIvCopyCode.setOnClickListener(new View.OnClickListener() { | 
| 201 | @Override | 252 | @Override | 
| ... | @@ -204,7 +255,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -204,7 +255,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 204 | } | 255 | } | 
| 205 | }); | 256 | }); | 
| 206 | } | 257 | } | 
| 207 | - | 258 | + | 
| 208 | /** | 259 | /** | 
| 209 | * Toggles between expanded and collapsed states for the coupon code section | 260 | * Toggles between expanded and collapsed states for the coupon code section | 
| 210 | */ | 261 | */ | 
| ... | @@ -221,26 +272,26 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -221,26 +272,26 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 221 | mIsCouponCodeExpanded = true; | 272 | mIsCouponCodeExpanded = true; | 
| 222 | } | 273 | } | 
| 223 | } | 274 | } | 
| 224 | - | 275 | + | 
| 225 | /** | 276 | /** | 
| 226 | * Copies the coupon code to the clipboard | 277 | * Copies the coupon code to the clipboard | 
| 227 | */ | 278 | */ | 
| 228 | private void copyCouponCodeToClipboard() { | 279 | private void copyCouponCodeToClipboard() { | 
| 229 | String couponCode = mTvCouponCode.getText().toString(); | 280 | String couponCode = mTvCouponCode.getText().toString(); | 
| 230 | - | 281 | + | 
| 231 | // Get clipboard manager | 282 | // Get clipboard manager | 
| 232 | ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); | 283 | ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); | 
| 233 | - | 284 | + | 
| 234 | // Create clip | 285 | // Create clip | 
| 235 | ClipData clip = ClipData.newPlainText("Coupon Code", couponCode); | 286 | ClipData clip = ClipData.newPlainText("Coupon Code", couponCode); | 
| 236 | - | 287 | + | 
| 237 | // Set the clipboard's primary clip | 288 | // Set the clipboard's primary clip | 
| 238 | clipboard.setPrimaryClip(clip); | 289 | clipboard.setPrimaryClip(clip); | 
| 239 | - | 290 | + | 
| 240 | // Show toast message | 291 | // Show toast message | 
| 241 | Toast.makeText(this, R.string.demo_copy_success, Toast.LENGTH_SHORT).show(); | 292 | Toast.makeText(this, R.string.demo_copy_success, Toast.LENGTH_SHORT).show(); | 
| 242 | } | 293 | } | 
| 243 | - | 294 | + | 
| 244 | /** | 295 | /** | 
| 245 | * Sets up the "More" button for expanding/collapsing the description text | 296 | * Sets up the "More" button for expanding/collapsing the description text | 
| 246 | */ | 297 | */ | 
| ... | @@ -253,7 +304,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -253,7 +304,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 253 | if (mTvFullDescription.getLineCount() > 3) { | 304 | if (mTvFullDescription.getLineCount() > 3) { | 
| 254 | // Show the More button | 305 | // Show the More button | 
| 255 | mTvMoreButton.setVisibility(View.VISIBLE); | 306 | mTvMoreButton.setVisibility(View.VISIBLE); | 
| 256 | - | 307 | + | 
| 257 | // Set click listener for the More button | 308 | // Set click listener for the More button | 
| 258 | mTvMoreButton.setOnClickListener(new View.OnClickListener() { | 309 | mTvMoreButton.setOnClickListener(new View.OnClickListener() { | 
| 259 | @Override | 310 | @Override | 
| ... | @@ -265,7 +316,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -265,7 +316,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 265 | } | 316 | } | 
| 266 | }); | 317 | }); | 
| 267 | } | 318 | } | 
| 268 | - | 319 | + | 
| 269 | /** | 320 | /** | 
| 270 | * Toggles between expanded and collapsed states for the description text | 321 | * Toggles between expanded and collapsed states for the description text | 
| 271 | */ | 322 | */ | 
| ... | @@ -294,7 +345,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -294,7 +345,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 294 | toggleQrCodeExpansion(); | 345 | toggleQrCodeExpansion(); | 
| 295 | } | 346 | } | 
| 296 | }); | 347 | }); | 
| 297 | - | 348 | + | 
| 298 | // Set click listener for the entire container as well | 349 | // Set click listener for the entire container as well | 
| 299 | mQrCodeContainer.setOnClickListener(new View.OnClickListener() { | 350 | mQrCodeContainer.setOnClickListener(new View.OnClickListener() { | 
| 300 | @Override | 351 | @Override | 
| ... | @@ -303,7 +354,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -303,7 +354,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 303 | } | 354 | } | 
| 304 | }); | 355 | }); | 
| 305 | } | 356 | } | 
| 306 | - | 357 | + | 
| 307 | /** | 358 | /** | 
| 308 | * Toggles between expanded and collapsed states for the QR code section | 359 | * Toggles between expanded and collapsed states for the QR code section | 
| 309 | */ | 360 | */ | 
| ... | @@ -332,7 +383,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -332,7 +383,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 332 | toggleTermsExpansion(); | 383 | toggleTermsExpansion(); | 
| 333 | } | 384 | } | 
| 334 | }); | 385 | }); | 
| 335 | - | 386 | + | 
| 336 | // Set click listener for the entire container as well | 387 | // Set click listener for the entire container as well | 
| 337 | mTermsContainer.setOnClickListener(new View.OnClickListener() { | 388 | mTermsContainer.setOnClickListener(new View.OnClickListener() { | 
| 338 | @Override | 389 | @Override | 
| ... | @@ -341,7 +392,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -341,7 +392,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | 
| 341 | } | 392 | } | 
| 342 | }); | 393 | }); | 
| 343 | } | 394 | } | 
| 344 | - | 395 | + | 
| 345 | /** | 396 | /** | 
| 346 | * Toggles between expanded and collapsed states for the Terms of Use section | 397 | * Toggles between expanded and collapsed states for the Terms of Use section | 
| 347 | */ | 398 | */ | ... | ... | 
| ... | @@ -24,6 +24,7 @@ import ly.warp.sdk.R; | ... | @@ -24,6 +24,7 @@ import ly.warp.sdk.R; | 
| 24 | import ly.warp.sdk.io.models.DummyDataProvider; | 24 | import ly.warp.sdk.io.models.DummyDataProvider; | 
| 25 | import ly.warp.sdk.io.models.OfferItem; | 25 | import ly.warp.sdk.io.models.OfferItem; | 
| 26 | import ly.warp.sdk.utils.TopRoundedCornersTransformation; | 26 | import ly.warp.sdk.utils.TopRoundedCornersTransformation; | 
| 27 | +import ly.warp.sdk.utils.WarpUtils; | ||
| 27 | 28 | ||
| 28 | /** | 29 | /** | 
| 29 | * Adapter for displaying offer items in a RecyclerView | 30 | * Adapter for displaying offer items in a RecyclerView | 
| ... | @@ -102,6 +103,9 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol | ... | @@ -102,6 +103,9 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol | 
| 102 | tvDescription = itemView.findViewById(R.id.tv_description); | 103 | tvDescription = itemView.findViewById(R.id.tv_description); | 
| 103 | tvValidity = itemView.findViewById(R.id.tv_validity); | 104 | tvValidity = itemView.findViewById(R.id.tv_validity); | 
| 104 | 105 | ||
| 106 | + WarpUtils.renderCustomFont(context, R.font.ping_lcg_bold, tvPrice, tvTitle); | ||
| 107 | + WarpUtils.renderCustomFont(context, R.font.ping_lcg_regular, tvDescription, tvValidity); | ||
| 108 | + | ||
| 105 | // Set click listeners | 109 | // Set click listeners | 
| 106 | itemView.setOnClickListener(v -> { | 110 | itemView.setOnClickListener(v -> { | 
| 107 | int position = getAdapterPosition(); | 111 | int position = getAdapterPosition(); | ... | ... | 
No preview for this file type
No preview for this file type
No preview for this file type
| ... | @@ -80,7 +80,6 @@ | ... | @@ -80,7 +80,6 @@ | 
| 80 | android:layout_height="wrap_content" | 80 | android:layout_height="wrap_content" | 
| 81 | android:layout_weight="1" | 81 | android:layout_weight="1" | 
| 82 | android:textColor="@color/black2" | 82 | android:textColor="@color/black2" | 
| 83 | - android:textStyle="bold" | ||
| 84 | android:textSize="16sp" | 83 | android:textSize="16sp" | 
| 85 | tools:text="Top Offers (10)" /> | 84 | tools:text="Top Offers (10)" /> | 
| 86 | 85 | ||
| ... | @@ -127,7 +126,6 @@ | ... | @@ -127,7 +126,6 @@ | 
| 127 | android:layout_height="wrap_content" | 126 | android:layout_height="wrap_content" | 
| 128 | android:layout_weight="1" | 127 | android:layout_weight="1" | 
| 129 | android:textColor="@color/black2" | 128 | android:textColor="@color/black2" | 
| 130 | - android:textStyle="bold" | ||
| 131 | android:textSize="16sp" | 129 | android:textSize="16sp" | 
| 132 | tools:text="Favorites (10)" /> | 130 | tools:text="Favorites (10)" /> | 
| 133 | 131 | ||
| ... | @@ -174,7 +172,6 @@ | ... | @@ -174,7 +172,6 @@ | 
| 174 | android:layout_height="wrap_content" | 172 | android:layout_height="wrap_content" | 
| 175 | android:layout_weight="1" | 173 | android:layout_weight="1" | 
| 176 | android:textColor="@color/black2" | 174 | android:textColor="@color/black2" | 
| 177 | - android:textStyle="bold" | ||
| 178 | android:textSize="16sp" | 175 | android:textSize="16sp" | 
| 179 | tools:text="Viability (10)" /> | 176 | tools:text="Viability (10)" /> | 
| 180 | 177 | ||
| ... | @@ -221,7 +218,6 @@ | ... | @@ -221,7 +218,6 @@ | 
| 221 | android:layout_height="wrap_content" | 218 | android:layout_height="wrap_content" | 
| 222 | android:layout_weight="1" | 219 | android:layout_weight="1" | 
| 223 | android:textColor="@color/black2" | 220 | android:textColor="@color/black2" | 
| 224 | - android:textStyle="bold" | ||
| 225 | android:textSize="16sp" | 221 | android:textSize="16sp" | 
| 226 | tools:text="Family (10)" /> | 222 | tools:text="Family (10)" /> | 
| 227 | 223 | ||
| ... | @@ -268,7 +264,6 @@ | ... | @@ -268,7 +264,6 @@ | 
| 268 | android:layout_height="wrap_content" | 264 | android:layout_height="wrap_content" | 
| 269 | android:layout_weight="1" | 265 | android:layout_weight="1" | 
| 270 | android:textColor="@color/black2" | 266 | android:textColor="@color/black2" | 
| 271 | - android:textStyle="bold" | ||
| 272 | android:textSize="16sp" | 267 | android:textSize="16sp" | 
| 273 | tools:text="Food and Coffee (10)" /> | 268 | tools:text="Food and Coffee (10)" /> | 
| 274 | 269 | ||
| ... | @@ -315,7 +310,6 @@ | ... | @@ -315,7 +310,6 @@ | 
| 315 | android:layout_height="wrap_content" | 310 | android:layout_height="wrap_content" | 
| 316 | android:layout_weight="1" | 311 | android:layout_weight="1" | 
| 317 | android:textColor="@color/black2" | 312 | android:textColor="@color/black2" | 
| 318 | - android:textStyle="bold" | ||
| 319 | android:textSize="16sp" | 313 | android:textSize="16sp" | 
| 320 | tools:text="Travelling (10)" /> | 314 | tools:text="Travelling (10)" /> | 
| 321 | 315 | ||
| ... | @@ -362,7 +356,6 @@ | ... | @@ -362,7 +356,6 @@ | 
| 362 | android:layout_height="wrap_content" | 356 | android:layout_height="wrap_content" | 
| 363 | android:layout_weight="1" | 357 | android:layout_weight="1" | 
| 364 | android:textColor="@color/black2" | 358 | android:textColor="@color/black2" | 
| 365 | - android:textStyle="bold" | ||
| 366 | android:textSize="16sp" | 359 | android:textSize="16sp" | 
| 367 | tools:text="Kids (10)" /> | 360 | tools:text="Kids (10)" /> | 
| 368 | 361 | ||
| ... | @@ -410,7 +403,6 @@ | ... | @@ -410,7 +403,6 @@ | 
| 410 | android:layout_height="wrap_content" | 403 | android:layout_height="wrap_content" | 
| 411 | android:layout_weight="1" | 404 | android:layout_weight="1" | 
| 412 | android:textColor="@color/black2" | 405 | android:textColor="@color/black2" | 
| 413 | - android:textStyle="bold" | ||
| 414 | android:textSize="16sp" | 406 | android:textSize="16sp" | 
| 415 | tools:text="Purchases (10)" /> | 407 | tools:text="Purchases (10)" /> | 
| 416 | 408 | ... | ... | 
| ... | @@ -41,13 +41,13 @@ | ... | @@ -41,13 +41,13 @@ | 
| 41 | android:src="@drawable/ic_back" /> | 41 | android:src="@drawable/ic_back" /> | 
| 42 | 42 | ||
| 43 | <TextView | 43 | <TextView | 
| 44 | + android:id="@+id/tv_header_title" | ||
| 44 | android:layout_width="wrap_content" | 45 | android:layout_width="wrap_content" | 
| 45 | android:layout_height="wrap_content" | 46 | android:layout_height="wrap_content" | 
| 46 | android:includeFontPadding="false" | 47 | android:includeFontPadding="false" | 
| 47 | android:text="@string/demo_offer" | 48 | android:text="@string/demo_offer" | 
| 48 | android:textColor="@color/black4" | 49 | android:textColor="@color/black4" | 
| 49 | - android:textSize="16sp" | 50 | + android:textSize="16sp" /> | 
| 50 | - android:textStyle="bold" /> | ||
| 51 | </LinearLayout> | 51 | </LinearLayout> | 
| 52 | </LinearLayout> | 52 | </LinearLayout> | 
| 53 | 53 | ||
| ... | @@ -85,6 +85,7 @@ | ... | @@ -85,6 +85,7 @@ | 
| 85 | android:src="@drawable/ic_info" /> | 85 | android:src="@drawable/ic_info" /> | 
| 86 | 86 | ||
| 87 | <TextView | 87 | <TextView | 
| 88 | + android:id="@+id/tv_more_title" | ||
| 88 | android:layout_width="wrap_content" | 89 | android:layout_width="wrap_content" | 
| 89 | android:layout_height="wrap_content" | 90 | android:layout_height="wrap_content" | 
| 90 | android:includeFontPadding="false" | 91 | android:includeFontPadding="false" | 
| ... | @@ -127,7 +128,6 @@ | ... | @@ -127,7 +128,6 @@ | 
| 127 | android:maxLines="1" | 128 | android:maxLines="1" | 
| 128 | android:textColor="@color/pink2" | 129 | android:textColor="@color/pink2" | 
| 129 | android:textSize="23sp" | 130 | android:textSize="23sp" | 
| 130 | - android:textStyle="bold" | ||
| 131 | tools:text="@string/demo_more" /> | 131 | tools:text="@string/demo_more" /> | 
| 132 | 132 | ||
| 133 | <TextView | 133 | <TextView | 
| ... | @@ -181,7 +181,7 @@ | ... | @@ -181,7 +181,7 @@ | 
| 181 | android:layout_height="wrap_content" | 181 | android:layout_height="wrap_content" | 
| 182 | android:layout_marginTop="16dp" | 182 | android:layout_marginTop="16dp" | 
| 183 | android:ellipsize="end" | 183 | android:ellipsize="end" | 
| 184 | - android:lineSpacingExtra="4dp" | 184 | + android:lineSpacingExtra="2dp" | 
| 185 | android:maxLines="4" | 185 | android:maxLines="4" | 
| 186 | android:textColor="@color/black5" | 186 | android:textColor="@color/black5" | 
| 187 | android:textSize="17sp" | 187 | android:textSize="17sp" | 
| ... | @@ -215,6 +215,7 @@ | ... | @@ -215,6 +215,7 @@ | 
| 215 | android:orientation="horizontal"> | 215 | android:orientation="horizontal"> | 
| 216 | 216 | ||
| 217 | <TextView | 217 | <TextView | 
| 218 | + android:id="@+id/tv_coupon_code_title" | ||
| 218 | android:layout_width="0dp" | 219 | android:layout_width="0dp" | 
| 219 | android:layout_height="wrap_content" | 220 | android:layout_height="wrap_content" | 
| 220 | android:layout_weight="1" | 221 | android:layout_weight="1" | 
| ... | @@ -247,8 +248,7 @@ | ... | @@ -247,8 +248,7 @@ | 
| 247 | android:includeFontPadding="false" | 248 | android:includeFontPadding="false" | 
| 248 | android:text="test_coupon_code" | 249 | android:text="test_coupon_code" | 
| 249 | android:textColor="@color/black2" | 250 | android:textColor="@color/black2" | 
| 250 | - android:textSize="23sp" | 251 | + android:textSize="23sp" /> | 
| 251 | - android:textStyle="bold" /> | ||
| 252 | 252 | ||
| 253 | <ImageView | 253 | <ImageView | 
| 254 | android:id="@+id/iv_copy_code" | 254 | android:id="@+id/iv_copy_code" | 
| ... | @@ -275,6 +275,7 @@ | ... | @@ -275,6 +275,7 @@ | 
| 275 | android:orientation="horizontal"> | 275 | android:orientation="horizontal"> | 
| 276 | 276 | ||
| 277 | <TextView | 277 | <TextView | 
| 278 | + android:id="@+id/tv_qr_code_title" | ||
| 278 | android:layout_width="0dp" | 279 | android:layout_width="0dp" | 
| 279 | android:layout_height="wrap_content" | 280 | android:layout_height="wrap_content" | 
| 280 | android:layout_weight="1" | 281 | android:layout_weight="1" | 
| ... | @@ -324,12 +325,12 @@ | ... | @@ -324,12 +325,12 @@ | 
| 324 | android:orientation="horizontal"> | 325 | android:orientation="horizontal"> | 
| 325 | 326 | ||
| 326 | <TextView | 327 | <TextView | 
| 328 | + android:id="@+id/tv_terms_title" | ||
| 327 | android:layout_width="wrap_content" | 329 | android:layout_width="wrap_content" | 
| 328 | android:layout_height="wrap_content" | 330 | android:layout_height="wrap_content" | 
| 329 | android:text="@string/demo_terms" | 331 | android:text="@string/demo_terms" | 
| 330 | android:textColor="@color/black2" | 332 | android:textColor="@color/black2" | 
| 331 | - android:textSize="15sp" | 333 | + android:textSize="15sp"/> | 
| 332 | - android:textStyle="bold" /> | ||
| 333 | 334 | ||
| 334 | <ImageView | 335 | <ImageView | 
| 335 | android:id="@+id/iv_terms_arrow" | 336 | android:id="@+id/iv_terms_arrow" | 
| ... | @@ -369,12 +370,13 @@ | ... | @@ -369,12 +370,13 @@ | 
| 369 | android:orientation="horizontal"> | 370 | android:orientation="horizontal"> | 
| 370 | 371 | ||
| 371 | <TextView | 372 | <TextView | 
| 373 | + android:id="@+id/tv_shops_title" | ||
| 372 | android:layout_width="wrap_content" | 374 | android:layout_width="wrap_content" | 
| 373 | android:layout_height="wrap_content" | 375 | android:layout_height="wrap_content" | 
| 374 | android:text="@string/demo_shops" | 376 | android:text="@string/demo_shops" | 
| 375 | android:textColor="@color/white" | 377 | android:textColor="@color/white" | 
| 376 | - android:textStyle="bold" | 378 | + android:textSize="15sp" | 
| 377 | - android:textSize="15sp" /> | 379 | + android:textStyle="bold" /> | 
| 378 | </LinearLayout> | 380 | </LinearLayout> | 
| 379 | 381 | ||
| 380 | <LinearLayout | 382 | <LinearLayout | 
| ... | @@ -386,12 +388,13 @@ | ... | @@ -386,12 +388,13 @@ | 
| 386 | android:orientation="horizontal"> | 388 | android:orientation="horizontal"> | 
| 387 | 389 | ||
| 388 | <TextView | 390 | <TextView | 
| 391 | + android:id="@+id/tv_website_title" | ||
| 389 | android:layout_width="wrap_content" | 392 | android:layout_width="wrap_content" | 
| 390 | android:layout_height="wrap_content" | 393 | android:layout_height="wrap_content" | 
| 391 | android:text="@string/demo_website" | 394 | android:text="@string/demo_website" | 
| 392 | android:textColor="@color/black2" | 395 | android:textColor="@color/black2" | 
| 393 | - android:textStyle="bold" | 396 | + android:textSize="15sp" | 
| 394 | - android:textSize="15sp" /> | 397 | + android:textStyle="bold" /> | 
| 395 | </LinearLayout> | 398 | </LinearLayout> | 
| 396 | </LinearLayout> | 399 | </LinearLayout> | 
| 397 | </LinearLayout> | 400 | </LinearLayout> | ... | ... | 
| ... | @@ -33,7 +33,6 @@ | ... | @@ -33,7 +33,6 @@ | 
| 33 | android:gravity="center" | 33 | android:gravity="center" | 
| 34 | android:textColor="@android:color/white" | 34 | android:textColor="@android:color/white" | 
| 35 | android:textSize="16sp" | 35 | android:textSize="16sp" | 
| 36 | - android:textStyle="bold" | ||
| 37 | tools:text="17,95€" /> | 36 | tools:text="17,95€" /> | 
| 38 | 37 | ||
| 39 | <!-- Content Section --> | 38 | <!-- Content Section --> | 
| ... | @@ -59,7 +58,6 @@ | ... | @@ -59,7 +58,6 @@ | 
| 59 | android:maxLines="1" | 58 | android:maxLines="1" | 
| 60 | android:textColor="@color/black2" | 59 | android:textColor="@color/black2" | 
| 61 | android:textSize="16sp" | 60 | android:textSize="16sp" | 
| 62 | - android:textStyle="bold" | ||
| 63 | app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70" | 61 | app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70" | 
| 64 | app:layout_constraintStart_toStartOf="parent" | 62 | app:layout_constraintStart_toStartOf="parent" | 
| 65 | app:layout_constraintTop_toTopOf="parent" | 63 | app:layout_constraintTop_toTopOf="parent" | ... | ... | 
- 
Please register or login to post a comment
