526 lines
21 KiB
XML
526 lines
21 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
android:id="@+id/rootCoordinator"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:background="@color/bg_dark">
|
|
|
|
<com.google.android.material.appbar.AppBarLayout
|
|
android:id="@+id/appBarLayout"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:background="@color/bg_dark"
|
|
app:elevation="0dp">
|
|
|
|
<!-- Top Urgency Web Banner (Purple-Fuchsia-Pink Gradient) -->
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:background="@drawable/bg_banner_gradient"
|
|
android:gravity="center"
|
|
android:orientation="horizontal"
|
|
android:paddingHorizontal="12dp"
|
|
android:paddingVertical="6dp">
|
|
|
|
<ImageView
|
|
android:layout_width="14dp"
|
|
android:layout_height="14dp"
|
|
android:src="@drawable/ic_sparkle"
|
|
app:tint="#FFFFFF" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginStart="6dp"
|
|
android:fontFamily="sans-serif-black"
|
|
android:letterSpacing="0.04"
|
|
android:text="🔥 ENVÍOS CONTRAENTREGA EN TODO COLOMBIA"
|
|
android:textColor="#FFFFFF"
|
|
android:textSize="10sp"
|
|
android:textStyle="bold" />
|
|
</LinearLayout>
|
|
|
|
<!-- Main Header Bar -->
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:gravity="center_vertical"
|
|
android:orientation="horizontal"
|
|
android:paddingHorizontal="16dp"
|
|
android:paddingTop="10dp"
|
|
android:paddingBottom="6dp">
|
|
|
|
<!-- DripZone Logo (DRIP in White, ZONE in Fuchsia) -->
|
|
<LinearLayout
|
|
android:layout_width="0dp"
|
|
android:layout_height="wrap_content"
|
|
android:layout_weight="1"
|
|
android:orientation="vertical">
|
|
|
|
<LinearLayout
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal">
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:fontFamily="sans-serif-black"
|
|
android:letterSpacing="0.08"
|
|
android:text="DRIP"
|
|
android:textColor="@color/text_primary"
|
|
android:textSize="22sp" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:fontFamily="sans-serif-black"
|
|
android:letterSpacing="0.08"
|
|
android:text="ZONE"
|
|
android:textColor="@color/drip_fuchsia"
|
|
android:textSize="22sp" />
|
|
</LinearLayout>
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:fontFamily="sans-serif-medium"
|
|
android:letterSpacing="0.05"
|
|
android:text="ROPA URBANA Y ZAPATILLAS"
|
|
android:textColor="@color/badge_drip_text"
|
|
android:textSize="10sp"
|
|
android:textStyle="bold" />
|
|
</LinearLayout>
|
|
|
|
<!-- Search Toggle -->
|
|
<ImageButton
|
|
android:id="@+id/btnToggleSearch"
|
|
android:layout_width="40dp"
|
|
android:layout_height="40dp"
|
|
android:background="?attr/selectableItemBackgroundBorderless"
|
|
android:contentDescription="Buscar"
|
|
android:src="@drawable/ic_search"
|
|
app:tint="@color/text_secondary" />
|
|
|
|
<!-- Header Cart Icon with Dynamic Badge -->
|
|
<FrameLayout
|
|
android:id="@+id/btnHeaderCart"
|
|
android:layout_width="40dp"
|
|
android:layout_height="40dp"
|
|
android:layout_marginStart="4dp"
|
|
android:clickable="true"
|
|
android:focusable="true">
|
|
|
|
<ImageView
|
|
android:layout_width="22dp"
|
|
android:layout_height="22dp"
|
|
android:layout_gravity="center"
|
|
android:src="@drawable/ic_shopping_bag"
|
|
app:tint="@color/text_primary" />
|
|
|
|
<TextView
|
|
android:id="@+id/tvHeaderCartBadge"
|
|
android:layout_width="16dp"
|
|
android:layout_height="16dp"
|
|
android:layout_gravity="top|end"
|
|
android:layout_marginTop="4dp"
|
|
android:layout_marginEnd="4dp"
|
|
android:background="@drawable/bg_badge_counter"
|
|
android:gravity="center"
|
|
android:text="0"
|
|
android:textColor="#FFFFFF"
|
|
android:textSize="9sp"
|
|
android:textStyle="bold"
|
|
android:visibility="gone" />
|
|
</FrameLayout>
|
|
|
|
<!-- Header My Account Button -->
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/btnHeaderAccount"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="36dp"
|
|
android:layout_marginStart="6dp"
|
|
android:filterTouchesWhenObscured="true"
|
|
android:insetTop="0dp"
|
|
android:insetBottom="0dp"
|
|
android:paddingHorizontal="10dp"
|
|
android:text="Mi Cuenta"
|
|
android:textAllCaps="false"
|
|
android:textColor="#FFFFFF"
|
|
android:textSize="11sp"
|
|
android:textStyle="bold"
|
|
app:backgroundTint="@color/drip_purple"
|
|
app:cornerRadius="10dp"
|
|
app:icon="@drawable/ic_user"
|
|
app:iconGravity="textStart"
|
|
app:iconPadding="4dp"
|
|
app:iconSize="14dp" />
|
|
</LinearLayout>
|
|
|
|
<!-- City Selector Pill Bar (Matching Web Location Selector) -->
|
|
<LinearLayout
|
|
android:id="@+id/btnChangeCityBar"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginHorizontal="16dp"
|
|
android:layout_marginTop="2dp"
|
|
android:layout_marginBottom="6dp"
|
|
android:background="@drawable/bg_btn_secondary"
|
|
android:clickable="true"
|
|
android:focusable="true"
|
|
android:gravity="center_vertical"
|
|
android:orientation="horizontal"
|
|
android:paddingHorizontal="12dp"
|
|
android:paddingVertical="7dp">
|
|
|
|
<ImageView
|
|
android:layout_width="16dp"
|
|
android:layout_height="16dp"
|
|
android:src="@drawable/ic_pin" />
|
|
|
|
<TextView
|
|
android:id="@+id/tvHeaderCityInfo"
|
|
android:layout_width="0dp"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginStart="8dp"
|
|
android:layout_weight="1"
|
|
android:ellipsize="end"
|
|
android:fontFamily="sans-serif-medium"
|
|
android:maxLines="1"
|
|
android:text="Enviando a Cali • Mismo día / 24h • 1er Cambio Gratis"
|
|
android:textColor="@color/text_primary"
|
|
android:textSize="11sp" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:fontFamily="sans-serif-bold"
|
|
android:text="Cambiar"
|
|
android:textColor="@color/drip_purple_glow"
|
|
android:textSize="11sp" />
|
|
</LinearLayout>
|
|
|
|
<!-- Search Input Bar -->
|
|
<LinearLayout
|
|
android:id="@+id/layoutSearchBar"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginHorizontal="16dp"
|
|
android:layout_marginTop="2dp"
|
|
android:layout_marginBottom="6dp"
|
|
android:background="@drawable/bg_search_input"
|
|
android:gravity="center_vertical"
|
|
android:orientation="horizontal"
|
|
android:paddingHorizontal="12dp"
|
|
android:visibility="gone">
|
|
|
|
<ImageView
|
|
android:layout_width="20dp"
|
|
android:layout_height="20dp"
|
|
android:src="@drawable/ic_search"
|
|
app:tint="@color/drip_purple_light" />
|
|
|
|
<EditText
|
|
android:id="@+id/etSearch"
|
|
android:layout_width="0dp"
|
|
android:layout_height="40dp"
|
|
android:layout_marginStart="8dp"
|
|
android:layout_weight="1"
|
|
android:background="@null"
|
|
android:hint="Buscar zapatillas, chanclas, bolsos..."
|
|
android:imeOptions="actionSearch"
|
|
android:inputType="text"
|
|
android:maxLines="1"
|
|
android:textColor="@color/text_primary"
|
|
android:textColorHint="@color/text_muted"
|
|
android:textSize="13sp" />
|
|
|
|
<ImageButton
|
|
android:id="@+id/btnClearSearch"
|
|
android:layout_width="32dp"
|
|
android:layout_height="32dp"
|
|
android:background="?attr/selectableItemBackgroundBorderless"
|
|
android:contentDescription="Limpiar"
|
|
android:src="@drawable/ic_close"
|
|
android:visibility="gone" />
|
|
</LinearLayout>
|
|
|
|
<!-- Categories Horizontal Filter -->
|
|
<androidx.recyclerview.widget.RecyclerView
|
|
android:id="@+id/rvCategories"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginBottom="8dp"
|
|
android:clipToPadding="false"
|
|
android:orientation="horizontal"
|
|
android:paddingHorizontal="16dp"
|
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
|
tools:listitem="@layout/item_category_chip" />
|
|
|
|
</com.google.android.material.appbar.AppBarLayout>
|
|
|
|
<!-- Swipe Refresh Layout containing Products Grid -->
|
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
|
android:id="@+id/swipeRefresh"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
|
|
|
<FrameLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent">
|
|
|
|
<!-- Products RecyclerView (2-column Grid) -->
|
|
<androidx.recyclerview.widget.RecyclerView
|
|
android:id="@+id/rvProducts"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:clipToPadding="false"
|
|
android:paddingHorizontal="10dp"
|
|
android:paddingTop="6dp"
|
|
android:paddingBottom="72dp"
|
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
|
app:spanCount="2"
|
|
tools:listitem="@layout/item_product" />
|
|
|
|
<!-- Empty / No Results View -->
|
|
<LinearLayout
|
|
android:id="@+id/layoutEmpty"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_gravity="center"
|
|
android:gravity="center"
|
|
android:orientation="vertical"
|
|
android:padding="32dp"
|
|
android:visibility="gone">
|
|
|
|
<ImageView
|
|
android:layout_width="64dp"
|
|
android:layout_height="64dp"
|
|
android:src="@drawable/ic_search"
|
|
app:tint="@color/drip_fuchsia" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="16dp"
|
|
android:fontFamily="sans-serif-bold"
|
|
android:text="No se encontraron productos"
|
|
android:textColor="@color/text_primary"
|
|
android:textSize="16sp" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="6dp"
|
|
android:gravity="center"
|
|
android:text="Prueba con otra búsqueda o solicita tu encargo personalizado"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="13sp" />
|
|
|
|
<com.google.android.material.button.MaterialButton
|
|
android:id="@+id/btnResetFilters"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="16dp"
|
|
android:filterTouchesWhenObscured="true"
|
|
android:text="Ver todos los productos"
|
|
android:textAllCaps="false"
|
|
app:backgroundTint="@color/drip_fuchsia"
|
|
app:cornerRadius="12dp" />
|
|
</LinearLayout>
|
|
|
|
<!-- Loading Indicator -->
|
|
<ProgressBar
|
|
android:id="@+id/progressBar"
|
|
android:layout_width="48dp"
|
|
android:layout_height="48dp"
|
|
android:layout_gravity="center"
|
|
android:indeterminateTint="@color/drip_fuchsia"
|
|
android:visibility="gone" />
|
|
|
|
</FrameLayout>
|
|
|
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
|
|
|
<!-- Mobile Bottom Navigation Dock (Matching Web MobileBottomDock) -->
|
|
<LinearLayout
|
|
android:id="@+id/bottomDock"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="60dp"
|
|
android:layout_gravity="bottom"
|
|
android:background="#FA0A0A0A"
|
|
android:elevation="12dp"
|
|
android:gravity="center_vertical"
|
|
android:orientation="horizontal"
|
|
android:paddingHorizontal="8dp">
|
|
|
|
<!-- 1. Inicio (Catálogo) -->
|
|
<LinearLayout
|
|
android:id="@+id/navBtnHome"
|
|
android:layout_width="0dp"
|
|
android:layout_height="match_parent"
|
|
android:layout_weight="1"
|
|
android:clickable="true"
|
|
android:focusable="true"
|
|
android:gravity="center"
|
|
android:orientation="vertical">
|
|
|
|
<ImageView
|
|
android:id="@+id/ivNavHome"
|
|
android:layout_width="22dp"
|
|
android:layout_height="22dp"
|
|
android:src="@drawable/ic_home"
|
|
app:tint="@color/drip_fuchsia" />
|
|
|
|
<TextView
|
|
android:id="@+id/tvNavHome"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="2dp"
|
|
android:fontFamily="sans-serif-bold"
|
|
android:text="Inicio"
|
|
android:textColor="@color/drip_fuchsia"
|
|
android:textSize="10sp" />
|
|
</LinearLayout>
|
|
|
|
<!-- 2. Buscar -->
|
|
<LinearLayout
|
|
android:id="@+id/navBtnSearch"
|
|
android:layout_width="0dp"
|
|
android:layout_height="match_parent"
|
|
android:layout_weight="1"
|
|
android:clickable="true"
|
|
android:focusable="true"
|
|
android:gravity="center"
|
|
android:orientation="vertical">
|
|
|
|
<ImageView
|
|
android:id="@+id/ivNavSearch"
|
|
android:layout_width="22dp"
|
|
android:layout_height="22dp"
|
|
android:src="@drawable/ic_search"
|
|
app:tint="@color/text_secondary" />
|
|
|
|
<TextView
|
|
android:id="@+id/tvNavSearch"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="2dp"
|
|
android:fontFamily="sans-serif-medium"
|
|
android:text="Buscar"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="10sp" />
|
|
</LinearLayout>
|
|
|
|
<!-- 3. Carrito con Contador Dinámico -->
|
|
<LinearLayout
|
|
android:id="@+id/navBtnCart"
|
|
android:layout_width="0dp"
|
|
android:layout_height="match_parent"
|
|
android:layout_weight="1"
|
|
android:clickable="true"
|
|
android:focusable="true"
|
|
android:gravity="center"
|
|
android:orientation="vertical">
|
|
|
|
<FrameLayout
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content">
|
|
|
|
<ImageView
|
|
android:id="@+id/ivNavCart"
|
|
android:layout_width="22dp"
|
|
android:layout_height="22dp"
|
|
android:src="@drawable/ic_shopping_bag"
|
|
app:tint="@color/text_secondary" />
|
|
|
|
<TextView
|
|
android:id="@+id/tvBottomCartBadge"
|
|
android:layout_width="16dp"
|
|
android:layout_height="16dp"
|
|
android:layout_gravity="top|end"
|
|
android:layout_marginTop="-4dp"
|
|
android:layout_marginEnd="-6dp"
|
|
android:background="@drawable/bg_badge_counter"
|
|
android:gravity="center"
|
|
android:text="0"
|
|
android:textColor="#FFFFFF"
|
|
android:textSize="9sp"
|
|
android:textStyle="bold"
|
|
android:visibility="gone" />
|
|
</FrameLayout>
|
|
|
|
<TextView
|
|
android:id="@+id/tvNavCart"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="2dp"
|
|
android:fontFamily="sans-serif-medium"
|
|
android:text="Carrito"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="10sp" />
|
|
</LinearLayout>
|
|
|
|
<!-- 4. Mis Pedidos (Rastreo y Detalle) -->
|
|
<LinearLayout
|
|
android:id="@+id/navBtnOrders"
|
|
android:layout_width="0dp"
|
|
android:layout_height="match_parent"
|
|
android:layout_weight="1"
|
|
android:clickable="true"
|
|
android:focusable="true"
|
|
android:gravity="center"
|
|
android:orientation="vertical">
|
|
|
|
<ImageView
|
|
android:id="@+id/ivNavOrders"
|
|
android:layout_width="22dp"
|
|
android:layout_height="22dp"
|
|
android:src="@drawable/ic_package"
|
|
app:tint="@color/text_secondary" />
|
|
|
|
<TextView
|
|
android:id="@+id/tvNavOrders"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="2dp"
|
|
android:fontFamily="sans-serif-medium"
|
|
android:text="Mis Pedidos"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="10sp" />
|
|
</LinearLayout>
|
|
|
|
<!-- 5. WhatsApp Asesor -->
|
|
<LinearLayout
|
|
android:id="@+id/navBtnWhatsApp"
|
|
android:layout_width="0dp"
|
|
android:layout_height="match_parent"
|
|
android:layout_weight="1"
|
|
android:clickable="true"
|
|
android:focusable="true"
|
|
android:gravity="center"
|
|
android:orientation="vertical">
|
|
|
|
<ImageView
|
|
android:layout_width="22dp"
|
|
android:layout_height="22dp"
|
|
android:src="@drawable/ic_whatsapp"
|
|
app:tint="@color/accent_whatsapp" />
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_marginTop="2dp"
|
|
android:fontFamily="sans-serif-medium"
|
|
android:text="Asesor"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="10sp" />
|
|
</LinearLayout>
|
|
|
|
</LinearLayout>
|
|
|
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|