From 22806da1b3f0a281d122e67225b2c0f6f4e481f5 Mon Sep 17 00:00:00 2001 From: ahusan Date: Thu, 28 May 2026 17:48:23 +0500 Subject: [PATCH] =?UTF-8?q?ui:=20pass=202=20=E2=80=94=20pill=20style,=20ta?= =?UTF-8?q?bular=20figures,=20ripple=20feedback,=20empty=20strings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Status pills: * New Widget.App.StatusChip style bundling the 10dp/4dp padding + chip_background + label-small text used in 3 places (item_bml_loan, item_finance_deal, item_profile_header). The 3 layouts now apply the style instead of repeating 4 attributes each. * Extract the bindCardStatus card-overlay pill background from inline GradientDrawable code into a real drawable resource (card_overlay_pill_bg.xml). PayWithCardFragment.bindCardStatus just sets a background resource now. Tabular figures (android:fontFeatureSettings="tnum"): * Applied to amount TextViews on the highest-traffic surfaces — transactions list, accounts list, card list, dashboard balance / credit / blocked / overdue / pending finances totals, and the account history header (available / balance / blocked). * Digits become same-width, so right-aligned amounts in a column line up. Ripple feedback: * item_finance_deal, item_bml_loan, item_foreign_limit get android:clickable="true" android:focusable="true" so their MaterialCardView roots show the M3 ripple when the adapter attaches a click listener. All three are clickable from code but were missing the ripple cue. Empty-state strings: * Hardcoded "No recent transfers" / "No transactions found" in fragment_activities, fragment_transfer_history, and fragment_account_history moved to strings.xml as activities_empty / transactions_empty, matching the existing accounts_empty / contacts_empty / financing_empty pattern. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../basedbank/ui/home/PayWithCardFragment.kt | 7 +----- .../res/drawable/card_overlay_pill_bg.xml | 9 ++++++++ .../res/layout/fragment_account_history.xml | 2 +- .../main/res/layout/fragment_activities.xml | 2 +- .../main/res/layout/fragment_dashboard.xml | 22 +++++++++++++------ .../res/layout/fragment_transfer_history.xml | 2 +- app/src/main/res/layout/item_account.xml | 4 +++- .../layout/item_account_history_header.xml | 9 +++++--- app/src/main/res/layout/item_bml_loan.xml | 8 +++---- app/src/main/res/layout/item_card.xml | 3 ++- app/src/main/res/layout/item_finance_deal.xml | 8 +++---- .../main/res/layout/item_foreign_limit.xml | 2 ++ .../main/res/layout/item_profile_header.xml | 6 +---- app/src/main/res/layout/item_transaction.xml | 1 + app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/values/themes.xml | 9 ++++++++ 16 files changed, 60 insertions(+), 36 deletions(-) create mode 100644 app/src/main/res/drawable/card_overlay_pill_bg.xml diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt index ae1b2be..35a834c 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt @@ -305,12 +305,7 @@ ViewCompat.setOnApplyWindowInsetsListener(binding.contentLayout) { v, insets -> if (statusLabel == null) { tv.visibility = View.GONE; return } tv.visibility = View.VISIBLE tv.text = statusLabel - val dp = tv.context.resources.displayMetrics.density - tv.background = GradientDrawable().apply { - shape = GradientDrawable.RECTANGLE - cornerRadius = 12 * dp - setColor(0xCC212121.toInt()) - } + tv.setBackgroundResource(R.drawable.card_overlay_pill_bg) } fun formatMasked(masked: String): String { diff --git a/app/src/main/res/drawable/card_overlay_pill_bg.xml b/app/src/main/res/drawable/card_overlay_pill_bg.xml new file mode 100644 index 0000000..cf0a838 --- /dev/null +++ b/app/src/main/res/drawable/card_overlay_pill_bg.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/layout/fragment_account_history.xml b/app/src/main/res/layout/fragment_account_history.xml index 83fb1fc..6e823cf 100644 --- a/app/src/main/res/layout/fragment_account_history.xml +++ b/app/src/main/res/layout/fragment_account_history.xml @@ -53,7 +53,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:text="No transactions found" + android:text="@string/transactions_empty" android:textAppearance="?attr/textAppearanceBodyMedium" android:textColor="?attr/colorOnSurfaceVariant" android:visibility="gone" /> diff --git a/app/src/main/res/layout/fragment_activities.xml b/app/src/main/res/layout/fragment_activities.xml index 0cf9ce9..ab02cc4 100644 --- a/app/src/main/res/layout/fragment_activities.xml +++ b/app/src/main/res/layout/fragment_activities.xml @@ -49,7 +49,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:text="No recent transfers" + android:text="@string/activities_empty" android:textAppearance="?attr/textAppearanceBodyMedium" android:textColor="?attr/colorOnSurfaceVariant" android:visibility="gone" /> diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml index 667ca7a..f4e6a21 100644 --- a/app/src/main/res/layout/fragment_dashboard.xml +++ b/app/src/main/res/layout/fragment_dashboard.xml @@ -56,7 +56,8 @@ android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="MVR —" - android:textAppearance="?attr/textAppearanceTitleMedium" /> + android:textAppearance="?attr/textAppearanceTitleMedium" + android:fontFeatureSettings="tnum" /> @@ -89,7 +90,8 @@ android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="USD —" - android:textAppearance="?attr/textAppearanceTitleMedium" /> + android:textAppearance="?attr/textAppearanceTitleMedium" + android:fontFeatureSettings="tnum" /> @@ -134,7 +136,8 @@ android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="MVR —" - android:textAppearance="?attr/textAppearanceTitleMedium" /> + android:textAppearance="?attr/textAppearanceTitleMedium" + android:fontFeatureSettings="tnum" /> @@ -168,7 +171,8 @@ android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="USD —" - android:textAppearance="?attr/textAppearanceTitleMedium" /> + android:textAppearance="?attr/textAppearanceTitleMedium" + android:fontFeatureSettings="tnum" /> @@ -216,7 +220,8 @@ android:layout_marginTop="4dp" android:text="MVR —" android:textAppearance="?attr/textAppearanceTitleMedium" - android:textColor="?attr/colorOnErrorContainer" /> + android:textColor="?attr/colorOnErrorContainer" + android:fontFeatureSettings="tnum" /> @@ -265,7 +271,8 @@ android:layout_marginTop="4dp" android:text="MVR —" android:textAppearance="?attr/textAppearanceTitleMedium" - android:textColor="?attr/colorOnErrorContainer" /> + android:textColor="?attr/colorOnErrorContainer" + android:fontFeatureSettings="tnum" /> @@ -303,7 +310,8 @@ android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="MVR —" - android:textAppearance="?attr/textAppearanceTitleMedium" /> + android:textAppearance="?attr/textAppearanceTitleMedium" + android:fontFeatureSettings="tnum" /> diff --git a/app/src/main/res/layout/fragment_transfer_history.xml b/app/src/main/res/layout/fragment_transfer_history.xml index 17acd5d..ce33d3d 100644 --- a/app/src/main/res/layout/fragment_transfer_history.xml +++ b/app/src/main/res/layout/fragment_transfer_history.xml @@ -54,7 +54,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:text="No transactions found" + android:text="@string/transactions_empty" android:textAppearance="?attr/textAppearanceBodyMedium" android:textColor="?attr/colorOnSurfaceVariant" android:visibility="gone" /> diff --git a/app/src/main/res/layout/item_account.xml b/app/src/main/res/layout/item_account.xml index 974dd24..1abb384 100644 --- a/app/src/main/res/layout/item_account.xml +++ b/app/src/main/res/layout/item_account.xml @@ -70,7 +70,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?attr/textAppearanceTitleSmall" - android:textColor="?attr/colorOnSurface" /> + android:textColor="?attr/colorOnSurface" + android:fontFeatureSettings="tnum" /> + android:layout_marginTop="2dp" + android:fontFeatureSettings="tnum" /> @@ -137,7 +138,8 @@ android:layout_height="wrap_content" android:textAppearance="?attr/textAppearanceTitleMedium" android:textColor="?attr/colorOnSurface" - android:layout_marginTop="2dp" /> + android:layout_marginTop="2dp" + android:fontFeatureSettings="tnum" /> @@ -162,7 +164,8 @@ android:layout_height="wrap_content" android:textAppearance="?attr/textAppearanceTitleMedium" android:textColor="?attr/colorError" - android:layout_marginTop="2dp" /> + android:layout_marginTop="2dp" + android:fontFeatureSettings="tnum" /> diff --git a/app/src/main/res/layout/item_bml_loan.xml b/app/src/main/res/layout/item_bml_loan.xml index 2a2b5a3..daa36b1 100644 --- a/app/src/main/res/layout/item_bml_loan.xml +++ b/app/src/main/res/layout/item_bml_loan.xml @@ -5,6 +5,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="12dp" + android:clickable="true" + android:focusable="true" app:cardCornerRadius="@dimen/card_radius_lg" app:cardElevation="@dimen/card_elevation_flat" app:strokeWidth="1dp" @@ -51,11 +53,7 @@ android:id="@+id/tvLoanStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingHorizontal="10dp" - android:paddingVertical="4dp" - android:background="@drawable/chip_background" - android:textAppearance="?attr/textAppearanceLabelSmall" - android:textColor="?attr/colorOnSecondaryContainer" /> + style="@style/Widget.App.StatusChip" /> diff --git a/app/src/main/res/layout/item_card.xml b/app/src/main/res/layout/item_card.xml index a08d3ee..828457b 100644 --- a/app/src/main/res/layout/item_card.xml +++ b/app/src/main/res/layout/item_card.xml @@ -83,7 +83,8 @@ android:layout_height="wrap_content" android:textAppearance="?attr/textAppearanceTitleSmall" android:textColor="?attr/colorOnSurface" - android:layout_marginTop="6dp" /> + android:layout_marginTop="6dp" + android:fontFeatureSettings="tnum" /> + style="@style/Widget.App.StatusChip" /> diff --git a/app/src/main/res/layout/item_foreign_limit.xml b/app/src/main/res/layout/item_foreign_limit.xml index fdfd8da..0c05bd6 100644 --- a/app/src/main/res/layout/item_foreign_limit.xml +++ b/app/src/main/res/layout/item_foreign_limit.xml @@ -5,6 +5,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" + android:clickable="true" + android:focusable="true" app:cardElevation="@dimen/card_elevation_raised" app:cardCornerRadius="@dimen/card_radius_md"> diff --git a/app/src/main/res/layout/item_profile_header.xml b/app/src/main/res/layout/item_profile_header.xml index c7b8285..2df4673 100644 --- a/app/src/main/res/layout/item_profile_header.xml +++ b/app/src/main/res/layout/item_profile_header.xml @@ -20,10 +20,6 @@ android:id="@+id/tvProfileType" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingHorizontal="10dp" - android:paddingVertical="4dp" - android:background="@drawable/chip_background" - android:textAppearance="?attr/textAppearanceLabelSmall" - android:textColor="?attr/colorOnSecondaryContainer" /> + style="@style/Widget.App.StatusChip" /> diff --git a/app/src/main/res/layout/item_transaction.xml b/app/src/main/res/layout/item_transaction.xml index 83c64e7..3141f8d 100644 --- a/app/src/main/res/layout/item_transaction.xml +++ b/app/src/main/res/layout/item_transaction.xml @@ -86,6 +86,7 @@ android:layout_height="wrap_content" android:textAppearance="?attr/textAppearanceTitleSmall" android:textStyle="bold" + android:fontFeatureSettings="tnum" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/fvAvatar" app:layout_constraintBottom_toBottomOf="@id/fvAvatar" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8c0fc41..4e84a2f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -255,6 +255,8 @@ No accounts found + No recent transfers + No transactions found No contacts found diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index c47bc14..abd5ed0 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,6 +1,15 @@ +