Compare commits

...

19 Commits
main ... ui

Author SHA1 Message Date
TaiwanStar Developer
404ba69fba chore: 修改 APP 圖示與顯示名稱為 StarCloud 2026-06-09 16:58:11 +08:00
TaiwanStar Developer
8e4a0993c7 style: 優化首頁購物按鈕樣式與文字,並新增 logo 資源
- 優化首頁 (activity_home.xml) 的購物按鈕 (startButton) 樣式:
  1. 寬度由 0dp 改為固定寬度 400dp。
  2. 按鈕文字由「購物去」調整為「開始購物」。
  3. 背景與文字顏色改為套用主題色系 (@color/primary 與 @color/onPrimary)。
- 新增星雲 LOGO 圓形圖示資源 (starcloud_logo_circle.png)。
2026-06-09 16:46:11 +08:00
TaiwanStar Developer
4d7717edc3 style: 優化後台貨道清單介面佈局與狀態顯示
- 狀態辨識度提升:
  1. 貨道編號新增「貨道」前綴字樣。
  2. 販售與停售狀態加入顏色識別,文字與 Switch 顏色會根據狀態動態切換(成功色/警告色)。
- 佈局與操作體驗優化:
  1. 重新排列操作區塊,將「清空貨道」按鈕移至卡片最下方。
  2. 放大庫存加減按鈕的觸控範圍(高度調整為 60dp)與字體大小,提升機台觸控體驗。
  3. 「清空貨道」按鈕改用 warning 警示色系。
- 視覺微調:移除卡片外框線,使列表視覺更為乾淨。
2026-06-09 16:14:36 +08:00
TaiwanStar Developer
b1732987ce feat: 優化商品搜尋介面並修復後台貨道編輯 Bug
- 商品搜尋介面大改版:
  1. 搜尋列表從單欄改為 3 欄網格排列,並導入 MaterialCardView 重新設計商品卡片。
  2. 搜尋框體驗優化:隱藏原生圖示,新增清空按鈕;支援點擊列表或候選字時自動收起鍵盤。
  3. 點擊候選字邏輯修改為直接套用完整字詞。
  4. 擴大點擊範圍,改為點擊整張商品卡片即可選取。
- 貨道編輯清單修復:
  1. 將 textCount 隱藏狀態改為 INVISIBLE 解決 GONE 導致輸入框寬度壓縮為 0 的問題。
  2. 輸入數量時改用 numberPassword 並移除密碼遮罩,以喚起乾淨的純數字鍵盤。
- 資源與樣式:
  1. 新增 button_outline_black.xml 黑框按鈕樣式。
  2. 修正圖片檔名大小寫 (eTicket -> eticket)。
2026-06-09 15:59:36 +08:00
TaiwanStar Developer
d917f6445c style(ui): 將出貨頁面標題改為灰色背景與黑色文字 2026-06-08 15:33:34 +08:00
TaiwanStar Developer
d1bf7d18ce style: 調整出貨清單 UI 的文字顏色與出貨中狀態格式
- 將商品名稱、順序(槽位號)與已出貨數量資訊的文字顏色改為黑色(@color/black)

- 將出貨中狀態的格式「出貨中(1)」改為「出貨中(1件)」
2026-06-08 14:34:26 +08:00
TaiwanStar Developer
f2ed393686 style(ui): 優化出貨進度對話框結構、版面自適應與配色調整
- 頁面標題改為「出貨進度」,背景調整為主色 (primary)
- 新增並更新多國語言字串 (processing, dispatch_progress)
- 重構底部的當前出貨進度區塊結構,移除冗餘嵌套,將區塊背景設為 cardSurface
- 取消按鈕樣式改為 warning/onWarning 配色,扁平化結構並去除冗餘 FrameLayout
- 清單區域高度改為 weight=1 自適應剩餘空間,移除 Space 元件,背景改為 background 色
2026-06-08 13:59:32 +08:00
TaiwanStar Developer
907d5095d5 style: 重構員工卡支付對話框佈局並更新身分證/員工卡相關圖檔資源 2026-06-08 11:54:15 +08:00
TaiwanStar Developer
28a3d623f0 feat: 新增支付管道與接受付款類型相關圖片資源 2026-06-08 09:53:40 +08:00
TaiwanStar Developer
2e71cc29b8 feat: 修改 VMC 貨道清單之未配置商品圖示、卡片背景色與一鍵補貨按鈕配色 2026-06-05 17:24:37 +08:00
TaiwanStar Developer
8f6b5217d6 feat(ui): 貨道停售中狀態時在商品圖片上方顯示透明黑色遮罩 2026-06-05 16:19:51 +08:00
TaiwanStar Developer
5d9c5ba5cf style(ui): 調整貨道管理儲存與一鍵補貨按鈕配色,並將 Switch 選中狀態設為 primary 色 2026-06-05 16:18:26 +08:00
TaiwanStar Developer
a933bb22f6 feat(ui): 改造貨道管理列表為卡片式 Grid 佈局與 Adapter 邏輯對接 2026-06-05 16:16:27 +08:00
TaiwanStar Developer
aed8d9bc1f style(ui): 依據參考介面調整貨道管理版面
調整項目:
1. 頂部區域:保留「貨道管理」標題,省略機櫃選擇與命名的部分。
2. 列表區域:將 recyclerSlotList 改為 Grid 網格排版,設定 spanCount 為 3。
3. 底部區域:省略批量匯出、批量匯入按鈕。將「返回」與「清空」按鈕設為隱藏以維持程式碼 ViewBinding 相容性。
4. 儲存按鈕:原「上傳後台並返回」按鈕文字修改為「儲存」,並維持原有點擊與同步邏輯。
2026-06-05 15:40:36 +08:00
TaiwanStar Developer
54e0c9ffa5 style(ui): 調整廣告區域容器比例至 21:9 與等比例縮放
1. 將廣告區域容器比例從 16:9 調整為 21:9

2. 設定影片播放器屬性為 app:resize_mode=zoom

3. 設定廣告圖片屬性為 android:scaleType=centerCrop
2026-06-04 16:28:34 +08:00
TaiwanStar Developer
02ae6623d9 style(ui): 調整前端首頁資訊排版與背景色
1. 將版本號與 TC/VC 移至最底部釘選

2. 頂部資訊順序改為「時間 | 溫度 | 網路」,文字改為 @color/gray

3. 上下區塊背景改為 @color/light_gray,文字改為 @color/gray

4. 頁面背景及商品卡片區域背景改為 @color/background
2026-06-04 15:41:56 +08:00
TaiwanStar Developer
12e61d2a10 feat(ui): 替換 VMC 購買清單為新版佈局並調適 Adapter
1. 替換 recycler_vmc_buy_list.xml 為新版 CardView 結構,微調定位使 textPrice 相容舊版價格邏輯
2. 將貨道 textSlot 移至左上角,大小設為 18sp,顏色改用 primary/onPrimary 語意色
3. 將庫存 textStock 獨立定位於右下角,大小設為 18sp,顏色改用 gray/black 資源
4. 修改 RecyclerVmcBuyListAdpter 綁定庫存數量,並將貨道文字調整為「貨道value」無補零格式
2026-06-04 15:24:22 +08:00
TaiwanStar Developer
c7d75a8522 fix(layout): 移除佈局 XML 檔案的 UTF-8 BOM 檔頭
修復 DataBinding 元件在 Gradle 建置過程中因 XML 檔案包含 BOM (Byte Order Mark) 檔頭而解析失敗的問題。

原因:XML 檔頭的前導字元 EF BB BF 導致 LayoutFileParser 在解析 root 節點時發生 NullPointerException。

調整項目:- 批次移除 layout 目錄下所有 XML 佈局檔案的 UTF-8 BOM 檔頭。
2026-06-04 14:22:32 +08:00
TaiwanStar Developer
c7b8372dfc style(ui): 簡化色彩系統設定與對齊佈局配置 2026-06-04 13:57:06 +08:00
72 changed files with 1148 additions and 934 deletions

View File

@ -1,34 +0,0 @@
---
name: android-deploy
description: 用於 TaiwanStar 專案的 Android App 編譯、安裝與自動啟動。當使用者要求「安裝到手機」、「部署 APK」或「更新 App」時應使用此技能。
---
# Android 部署技能 (TaiwanStar 專案專用)
此技能定義了在 WSL 環境下編譯 Android App 並透過 Windows ADB 安裝至實體手機的標準流程。
## 前置要求
1. **Java 版本**:必須使用 OpenJDK 17。
2. **ADB 工具**:使用 Windows 端安裝的 ADB (路徑:`/mnt/c/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe`)。
3. **手機連線**:手機必須開啟 USB 調試,且已連線至電腦。
## 標準部署流程
執行以下複合指令以完成「編譯 + 安裝 + 自動啟動」:
```bash
# 1. 設定環境變數
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
# 2. 執行編譯與安裝 (包含自動開啟 HomeActivity)
./gradlew :app:assembleS_12_XY_U_Standard_Debug && \
/mnt/c/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe install -r -d -t app/build/outputs/apk/S_12_XY_U_Standard_/debug/app-S_12_XY_U_Standard_-10_08_2_R-debug.apk && \
/mnt/c/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe shell am start -n com.unibuy.smartdevice/com.unibuy.smartdevice.HomeActivity
```
## 注意事項
- **安裝失敗**:若出現 `INSTALL_FAILED_UPDATE_INCOMPATIBLE`,代表簽名或版本衝突,請先執行 `adb uninstall com.unibuy.smartdevice`
- **ADB 找不到裝置**:請確認手機 USB 模式是否為「檔案傳輸」或「PTP」並檢查 Windows 端的 ADB server 是否正常執行。
- **Mock Mode**:此部署版本已包含 Mock Mode可在無串口設備的手機上正常運作不崩潰。

View File

@ -1,27 +0,0 @@
#!/bin/bash
# TaiwanStar Android 部署腳本
# 自動執行:編譯 -> 安裝 -> 啟動
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ADB_PATH="/mnt/c/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe"
APK_PATH="app/build/outputs/apk/S_12_XY_U_Standard_/debug/app-S_12_XY_U_Standard_-10_08_2_R-debug.apk"
PACKAGE_NAME="com.unibuy.smartdevice"
LAUNCHER_ACTIVITY=".HomeActivity"
echo "🚀 開始編譯 APK..."
./gradlew :app:assembleS_12_XY_U_Standard_Debug
if [ $? -eq 0 ]; then
echo "✅ 編譯成功,正在安裝至手機..."
$ADB_PATH install -r -d -t $APK_PATH
if [ $? -eq 0 ]; then
echo "🎉 安裝成功,正在啟動 App..."
$ADB_PATH shell am start -n $PACKAGE_NAME/$LAUNCHER_ACTIVITY
else
echo "❌ 安裝失敗,請檢查手機連線狀態。"
fi
else
echo "❌ 編譯失敗,請檢查程式碼錯誤。"
fi

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
@ -12,7 +12,7 @@
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="20dp"
@ -260,7 +260,7 @@
android:layout_height="100dp"
android:text="進入後台"
android:textSize="24sp"
android:backgroundTint="@color/red"
android:backgroundTint="@color/error"
android:textColor="@android:color/white"
android:alpha="1"
app:layout_constraintTop_toTopOf="parent"

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
@ -133,7 +133,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="出貨明細:"
android:textColor="@color/white"

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="購物車"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.15"
android:gravity="center|end"
android:text="合計金額:"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.85"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
@ -20,7 +20,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="取貨碼"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="輸入取貨碼 或 掃描QRCode"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -20,9 +20,9 @@
android:allowBackup="false"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@drawable/cpu"
android:icon="@drawable/starcloud_logo_circle"
android:label="@string/app_name"
android:roundIcon="@drawable/cpu"
android:roundIcon="@drawable/starcloud_logo_circle"
android:supportsRtl="true"
android:theme="@style/Theme.SmartDevice"
android:windowSoftInputMode="adjustPan"

View File

@ -346,8 +346,12 @@ public class Tools {
public void setImmOpenByFocusChange(EditText editText) {
editText.requestFocus();
editText.setSelection(editText.getText().length());
InputMethodManager imm = (InputMethodManager) context.getSystemService(context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
// 使用 post() 延遲執行確保 hideSystemBars() 觸發的 Window 重繪完成後才彈出鍵盤
// 若直接呼叫 showSoftInputWindow flag 變更會清除 focus導致鍵盤無法彈出
editText.post(() -> {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
});
}
public void setImmHideByFocusChange(EditText editText) {

View File

@ -12,6 +12,7 @@ import android.widget.ImageView;
import android.widget.SearchView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.GridLayoutManager;
import com.unibuy.smartdevice.AppCompatActivityAbstract;
import com.unibuy.smartdevice.MyApp;
@ -94,34 +95,44 @@ public class ProductSearchActivity extends AppCompatActivityAbstract {
if (size > 0) recyclerSearchTextAdpter.notifyItemRangeRemoved(0, size);
if (message.isEmpty()) {
binding.recyclerSearchText.setVisibility(View.GONE);
binding.textSearchStatus.setVisibility(View.VISIBLE);
binding.textSearchStatus.setText("請輸入您要搜尋的文字");
for (ProductStructure product: MyApp.getInstance().getProductList()) {
searchProductList.add(product);
}
recyclerProductSearchAdpter.notifyItemInserted(searchProductList.size() -1);
if (searchProductList.size() > 0) {
recyclerProductSearchAdpter.notifyDataSetChanged();
}
} else {
for (ProductStructure product: MyApp.getInstance().getProductList()) {
if (product.getProductName().contains(message)) {
searchProductList.add(product);
String name = product.getProductName();
// Log.i("product name", name);
int index = name.indexOf(message);
if (index != -1 && index < name.length() - 1) {
String result = name.substring(index + message.length());
if (!result.isEmpty()) {
String oneText = String.valueOf(result.charAt(0));
if (!searchTextList.contains(oneText)) {
searchTextList.add(oneText);
}
}
if (!searchTextList.contains(name)) {
searchTextList.add(name);
}
}
}
if (searchTextList.size() > 2) Collections.sort(searchTextList);
recyclerProductSearchAdpter.notifyItemInserted(searchProductList.size() -1);
recyclerSearchTextAdpter.notifyItemInserted(searchTextList.size() -1);
if (searchTextList.isEmpty()) {
binding.recyclerSearchText.setVisibility(View.GONE);
binding.textSearchStatus.setVisibility(View.VISIBLE);
binding.textSearchStatus.setText("查無相關的候選字");
} else {
binding.recyclerSearchText.setVisibility(View.VISIBLE);
binding.textSearchStatus.setVisibility(View.GONE);
recyclerSearchTextAdpter.notifyDataSetChanged();
}
if (searchProductList.size() > 0) {
recyclerProductSearchAdpter.notifyDataSetChanged();
}
}
break;
}
@ -140,7 +151,7 @@ public class ProductSearchActivity extends AppCompatActivityAbstract {
recyclerProductSearchAdpter = new RecyclerProductSearchAdpter(getCtx(), position, searchProductList);
binding.recyclerProductSearch.setAdapter(recyclerProductSearchAdpter);
binding.recyclerProductSearch.setLayoutManager(new LinearLayoutManager(getCtx()));
binding.recyclerProductSearch.setLayoutManager(new GridLayoutManager(getCtx(), 3));
recyclerSearchTextAdpter = new RecyclerSearchTextAdpter(binding, searchTextList);
binding.recyclerSearchText.setAdapter(recyclerSearchTextAdpter);
@ -149,8 +160,30 @@ public class ProductSearchActivity extends AppCompatActivityAbstract {
// SearchView searchView = binding.searchProductList;
// enlargeSearchView(searchView, 32, 20, R.drawable.search); // icon 32dp文字 20sp自訂 drawable
replaceSearchViewIcon(binding.searchProductList);
binding.searchProductList.setOnQueryTextListener(new SearchProductListOnQueryText(getHandlerMain()));
binding.searchProductList.setOnQueryTextListener(new SearchProductListOnQueryText(getHandlerMain()) {
@Override
public boolean onQueryTextSubmit(String query) {
binding.searchProductList.clearFocus();
return super.onQueryTextSubmit(query);
}
});
// 點擊列表時自動關閉鍵盤
binding.recyclerProductSearch.setOnTouchListener((v, event) -> {
binding.searchProductList.clearFocus();
return false;
});
binding.recyclerSearchText.setOnTouchListener((v, event) -> {
binding.searchProductList.clearFocus();
return false;
});
binding.buttonBack.setOnClickListener(v -> finish());
binding.buttonClear.setOnClickListener(v -> {
binding.searchProductList.setQuery("", false);
binding.searchProductList.clearFocus();
});
if (MyApp.getInstance().getProductList().isEmpty()) {
ProductsDao productsDao = new ProductsDao(getCtx());
@ -172,9 +205,6 @@ public class ProductSearchActivity extends AppCompatActivityAbstract {
private void replaceSearchViewIcon(SearchView searchView) {
if (searchView == null) return;
// 設定 hint
searchView.setQueryHint("輸入搜尋關鍵字");
// 找到內部的 EditText修改字體大小 & 顏色
int searchEditTextId = searchView.getContext()
.getResources()
@ -194,7 +224,24 @@ public class ProductSearchActivity extends AppCompatActivityAbstract {
ImageView searchIcon = searchView.findViewById(searchIconId);
if (searchIcon != null) {
searchIcon.setImageResource(R.drawable.searchopen);
searchIcon.setImageDrawable(null);
searchIcon.setVisibility(View.GONE);
}
// 隱藏內部的清除 icon
int closeIconId = searchView.getContext()
.getResources()
.getIdentifier("android:id/search_close_btn", null, null);
ImageView closeIcon = searchView.findViewById(closeIconId);
if (closeIcon != null) {
closeIcon.setImageDrawable(null);
closeIcon.setEnabled(false);
ViewGroup.LayoutParams params = closeIcon.getLayoutParams();
if (params != null) {
params.width = 0;
params.height = 0;
closeIcon.setLayoutParams(params);
}
}
}

View File

@ -79,7 +79,7 @@ public class RecyclerVmcBuyListAdpter extends RecyclerView.Adapter<RecyclerVmcBu
} catch (LogsEmptyException e) {
this.logs.warning(e);
}
holder.binding.textSlot.setText(String.format("%03d", slot.getSlot()));
holder.binding.textSlot.setText("貨道" + slot.getSlot());
// 多國語的判斷
String currentLang = LanguageHelper.getSavedLanguage(context);
holder.binding.textProductName.setText(slot.getProduct().getProductName());
@ -110,6 +110,9 @@ public class RecyclerVmcBuyListAdpter extends RecyclerView.Adapter<RecyclerVmcBu
holder.binding.textPrice.setVisibility(View.GONE);
}
// 綁定庫存數量顯示
holder.binding.textStock.setText("庫存: " + count);
holder.binding.mask.setVisibility(View.GONE);
holder.binding.textMask.setText("");

View File

@ -19,10 +19,12 @@ import androidx.viewpager.widget.ViewPager;
import com.unibuy.smartdevice.R;
import com.unibuy.smartdevice.databinding.RecyclerVmcSlotListBinding;
import com.unibuy.smartdevice.exception.Logs;
import com.unibuy.smartdevice.exception.LogsEmptyException;
import com.unibuy.smartdevice.structure.ProductStructure;
import com.unibuy.smartdevice.structure.SlotStructure;
import com.unibuy.smartdevice.tools.Tools;
import com.unibuy.smartdevice.ui.ProductSearchActivity;
import com.unibuy.smartdevice.ui.tools.ImageGlide;
import java.util.List;
@ -62,7 +64,7 @@ public class RecyclerVmcSlotListAdpter extends RecyclerView.Adapter<RecyclerVmcS
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
SlotStructure slot = slotList.get(position);
holder.binding.textSlot.setText(String.valueOf(slot.getSlot()));
holder.binding.textSlot.setText("貨道" + slot.getSlot());
String productID = slot.getProduct().getProductID();
if (!productID.isEmpty() && !productID.equals("?")) {
holder.binding.textProductName.setText(slot.getProduct().getProductName());
@ -71,17 +73,54 @@ public class RecyclerVmcSlotListAdpter extends RecyclerView.Adapter<RecyclerVmcS
}
holder.binding.textCount.setText(String.valueOf(slot.getCount()));
holder.binding.editCount.setText(String.valueOf(slot.getCount()));
// numberPassword 預設會遮罩輸入關閉遮罩以顯示明碼數字
holder.binding.editCount.setTransformationMethod(null);
if (slot.isLock()) {
holder.binding.textLock.setText(context.getString(R.string.lock));
holder.binding.textLock.setTextColor(Color.BLACK);
holder.binding.textLock.setChecked(false);
holder.binding.textLockStatus.setText("停售中");
holder.binding.textLockStatus.setTextColor(androidx.core.content.ContextCompat.getColor(context, R.color.warning));
holder.binding.textLock.setThumbTintList(android.content.res.ColorStateList.valueOf(androidx.core.content.ContextCompat.getColor(context, R.color.warning)));
holder.binding.textLock.setTrackTintList(android.content.res.ColorStateList.valueOf(androidx.core.graphics.ColorUtils.setAlphaComponent(androidx.core.content.ContextCompat.getColor(context, R.color.warning), 77)));
holder.binding.viewProductMask.setVisibility(View.VISIBLE);
} else {
holder.binding.textLock.setText(context.getString(R.string.unlocked));
holder.binding.textLock.setTextColor(Color.GRAY);
holder.binding.textLock.setChecked(true);
holder.binding.textLockStatus.setText("販售中");
holder.binding.textLockStatus.setTextColor(androidx.core.content.ContextCompat.getColor(context, R.color.success));
holder.binding.textLock.setThumbTintList(android.content.res.ColorStateList.valueOf(androidx.core.content.ContextCompat.getColor(context, R.color.success)));
holder.binding.textLock.setTrackTintList(android.content.res.ColorStateList.valueOf(androidx.core.graphics.ColorUtils.setAlphaComponent(androidx.core.content.ContextCompat.getColor(context, R.color.success), 77)));
holder.binding.viewProductMask.setVisibility(View.GONE);
}
holder.binding.textProductName.setOnClickListener(new selectPositionOnClickListener(position));
holder.binding.textCount.setOnClickListener(new textCountOnClickListener(holder.binding, slot.getCount()));
holder.binding.textLock.setOnClickListener(new textLockOnClickListener(position));
String productImg = slot.getProduct().getProductImg();
if (productImg != null && !productImg.isEmpty() && !productImg.equals("?")) {
try {
new ImageGlide(context).fileload(productImg, holder.binding.imageProduct);
} catch (LogsEmptyException e) {
holder.binding.imageProduct.setImageResource(R.drawable.slot_no_product);
}
} else {
holder.binding.imageProduct.setImageResource(R.drawable.slot_no_product);
}
holder.binding.buttonCountMinus.setOnClickListener(v -> {
int current = slot.getCount();
if (current > 0) {
slot.setCount(current - 1);
notifyItemChanged(position);
}
});
holder.binding.buttonCountPlus.setOnClickListener(v -> {
int current = slot.getCount();
slot.setCount(current + 1);
notifyItemChanged(position);
});
holder.binding.imageProduct.setOnClickListener(new selectPositionOnClickListener(position));
holder.binding.textProductName.setOnClickListener(null);
holder.binding.textCount.setOnClickListener(new textCountOnClickListener(holder.binding, slot.getCount()));
holder.binding.textDelete.setOnClickListener(new textDeleteOnClickListener(position));
holder.binding.editCount.setOnEditorActionListener(new editCountOnEditorActionListener(holder.binding, position));
holder.binding.editCount.setOnClickListener(new editCountOnClickListener(holder.binding, slot.getCount()));
@ -163,7 +202,9 @@ public class RecyclerVmcSlotListAdpter extends RecyclerView.Adapter<RecyclerVmcS
@Override
public void onClick(View v) {
binding.textCount.setVisibility(View.GONE);
// 改用 INVISIBLE 而非 GONE避免 buttonCountPlus constraint textCount 折疊
// 導致 editCount 可用寬度被壓縮成 0看不到輸入框IME 無法接受輸入
binding.textCount.setVisibility(View.INVISIBLE);
binding.editCount.setVisibility(View.VISIBLE);
if (this.count == 0) {
binding.editCount.setText("");

View File

@ -9,7 +9,7 @@ import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.GridLayoutManager;
import com.unibuy.smartdevice.AppCompatActivityAbstract;
import com.unibuy.smartdevice.MyApp;
@ -127,7 +127,7 @@ public class VmcSlotListActivity extends AppCompatActivityAbstract {
recyclerVmcSlotListAdpter = new RecyclerVmcSlotListAdpter(this, resultLauncher, MyApp.getInstance().getSlotList(SlotField.VMC.getField()));
binding.recyclerSlotList.setAdapter(recyclerVmcSlotListAdpter);
binding.recyclerSlotList.setLayoutManager(new LinearLayoutManager(this));
binding.recyclerSlotList.setLayoutManager(new GridLayoutManager(this, 3));
// dataShow();

View File

@ -1,12 +1,13 @@
package com.unibuy.smartdevice.ui.recycler;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.unibuy.smartdevice.R;
@ -83,29 +84,31 @@ public class RecyclerDialogDispatchListAdpter extends RecyclerView.Adapter<Recyc
int price = machinePrice > 0? machinePrice: sellingPrice;
holder.binding.textCount.setText(String.valueOf(count));
holder.binding.textQuantity.setText(String.valueOf(quantity));
holder.binding.textCount.setText(String.format("已出貨數量(%d / %d", count, quantity));
logs.info("isShipped:" + dispatchProduct.isShipped());
if (dispatchProduct.getCount() == dispatchProduct.getQuantity()) {
holder.binding.textDispatchStatus.setText(context.getString(R.string.shipped));//已出貨
holder.binding.textDispatchStatus.setTextColor(Color.RED);
holder.binding.textDispatchStatus.setTextColor(ContextCompat.getColor(context, R.color.onSuccess));
holder.binding.textDispatchStatus.setBackground(createTagBackground(R.color.success));
} else if (dispatchProduct.isShipped()) {
try {
if (SlotField.getSlotField(dispatchProduct.getField()).isCanOneShipped()) {
holder.binding.textDispatchStatus.setText(context.getString(R.string.shipping)+"("+(count+1)+")");//出貨中
holder.binding.textDispatchStatus.setText(context.getString(R.string.shipping)+""+(count+1)+"件)");//出貨中
} else {
holder.binding.textDispatchStatus.setText(context.getString(R.string.shipping)+"(All)");//出貨中
}
} catch (LogsEmptyException e) {
holder.binding.textDispatchStatus.setText(context.getString(R.string.shipping)+"("+(count+1)+")");//出貨中
holder.binding.textDispatchStatus.setText(context.getString(R.string.shipping)+""+(count+1)+"件)");//出貨中
}
holder.binding.textDispatchStatus.setTextColor(Color.RED);
holder.binding.textDispatchStatus.setTextColor(ContextCompat.getColor(context, R.color.onPrimary));
holder.binding.textDispatchStatus.setBackground(createTagBackground(R.color.primary));
} else {
holder.binding.textDispatchStatus.setText(context.getString(R.string.waiting));//等待中
holder.binding.textDispatchStatus.setTextColor(Color.BLACK);
holder.binding.textDispatchStatus.setTextColor(ContextCompat.getColor(context, R.color.black));
holder.binding.textDispatchStatus.setBackground(createTagBackground(R.color.gray));
}
}
@ -121,6 +124,14 @@ public class RecyclerDialogDispatchListAdpter extends RecyclerView.Adapter<Recyc
delProductData(position);
}
}
/** 建立圓角標籤背景 */
private GradientDrawable createTagBackground(int colorResId) {
GradientDrawable drawable = new GradientDrawable();
drawable.setColor(ContextCompat.getColor(context, colorResId));
drawable.setCornerRadius(context.getResources().getDisplayMetrics().density * 20);
return drawable;
}
@Override
public int getItemCount() {
return dispatchList.size();

View File

@ -69,7 +69,7 @@ public class RecyclerProductSearchAdpter extends RecyclerView.Adapter<RecyclerPr
holder.binding.textProductId.setText(product.getProductID());
holder.binding.textProductName.setText(product.getProductName());
holder.binding.buttonSlotProductSelect.setOnClickListener(new View.OnClickListener() {
holder.binding.cardProduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("select product", "點選商品:"+product.getProductName());

View File

@ -58,9 +58,9 @@ public class RecyclerSearchTextAdpter extends RecyclerView.Adapter<RecyclerSearc
@Override
public void onClick(View v) {
String nowText = activityProductSearchBinding.searchProductList.getQuery().toString();
Log.i("SearchTextOnClick", nowText + oneText);
activityProductSearchBinding.searchProductList.setQuery(nowText+oneText, false);
Log.i("SearchTextOnClick", "Selected full name: " + oneText);
activityProductSearchBinding.searchProductList.setQuery(oneText, false);
activityProductSearchBinding.searchProductList.clearFocus();
}
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/primary" />
<item android:color="@color/light_gray" />
</selector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="#4D005DAD" />
<item android:color="#E0E0E0" />
</selector>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 背景透明 -->
<solid android:color="@color/transparent" />
<solid android:color="@android:color/transparent" />
<!-- 外框線設定 -->
<stroke
android:width="2dp"

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/surface" />
<stroke android:width="1.5dp" android:color="@color/outlineVariant" />
<solid android:color="@color/cardSurface" />
<stroke android:width="1.5dp" android:color="@color/gray" />
<corners android:radius="12dp" />
<padding
android:left="16dp"

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@color/black" />
<corners android:radius="8dp" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

View File

@ -5,14 +5,14 @@
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_gray"
android:background="@color/background"
>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/light_gray"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="20dp"
@ -22,95 +22,35 @@
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textVersion"
android:layout_width="80dp"
android:id="@+id/textTime"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:text="20250108ver1"
android:textColor="@color/white"
android:layout_weight="1.2"
android:gravity="start|center_vertical"
android:text="1911/01/01 01:01:01"
android:textColor="@color/gray"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textThreadCount"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:text="TC:0"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/btnswitchlanTW"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:text="中"
android:visibility="gone"
android:textSize="30sp"
android:textColor="@color/white"
android:textStyle="bold"
/>
<TextView
android:id="@+id/btnswitchlanEn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:text="En"
android:visibility="gone"
android:textSize="30sp"
android:textColor="@color/white"
android:textStyle="bold"
/>
<TextView
android:id="@+id/btnswitchlanJa"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:text="日"
android:visibility="gone"
android:textSize="30sp"
android:textColor="@color/white"
android:textStyle="bold"
/>
<TextView
android:id="@+id/textTemperature"
android:layout_width="60dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:layout_weight="0.8"
android:gravity="center"
android:text="0 ℃"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textTime"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:text="1911/01/01 01:01:01"
android:textColor="@color/white"
android:textColor="@color/gray"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textNetwork"
android:layout_width="150dp"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|end"
android:text="@string/no_internet"
android:textColor="@color/white"
android:textColor="@color/gray"
android:textSize="18sp"
android:textStyle="bold" />
@ -123,7 +63,7 @@
android:layout_marginTop="60dp"
android:layout_marginBottom="2dp"
android:background="@color/black"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintDimensionRatio="21:9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@ -135,13 +75,13 @@
app:show_subtitle_button="true"
app:use_artwork="true"
app:use_controller="false"
app:layout_constraintDimensionRatio="16:9" />
app:resize_mode="zoom" />
<ImageView
android:id="@+id/imageAd"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:scaleType="centerCrop"
android:visibility="gone"
/>
</RelativeLayout>
@ -161,7 +101,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/bottom_bar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
@ -219,6 +159,78 @@
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/bottom_bar"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/light_gray"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/textVersion"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:gravity="start"
android:text="20250108ver1"
android:textColor="@color/gray"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/btnswitchlanTW"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="中"
android:visibility="gone"
android:textSize="16sp"
android:textColor="@color/gray"
android:textStyle="bold"
android:layout_marginEnd="10dp" />
<TextView
android:id="@+id/btnswitchlanEn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="En"
android:visibility="gone"
android:textSize="16sp"
android:textColor="@color/gray"
android:textStyle="bold"
android:layout_marginEnd="10dp" />
<TextView
android:id="@+id/btnswitchlanJa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="日"
android:visibility="gone"
android:textSize="16sp"
android:textColor="@color/gray"
android:textStyle="bold" />
<TextView
android:id="@+id/textThreadCount"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:gravity="end"
android:text="TC:0"
android:textColor="@color/gray"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="@+id/floatButtonPickupCode"
android:layout_width="50dp"
@ -258,7 +270,7 @@
android:layout_height="100dp"
android:text="進入後台"
android:textSize="24sp"
android:backgroundTint="@color/red"
android:backgroundTint="@color/error"
android:textColor="@android:color/white"
android:alpha="1"
app:layout_constraintTop_toTopOf="parent"

View File

@ -39,12 +39,12 @@
<!-- 浮動按鈕 -->
<Button
android:id="@+id/startButton"
android:layout_width="0dp"
android:layout_width="400dp"
android:layout_height="100dp"
android:text="購物"
android:text="開始購物"
android:textSize="40sp"
android:textColor="@android:color/black"
android:backgroundTint="#ff9e00"
android:textColor="@color/onPrimary"
android:backgroundTint="@color/primary"
android:layout_marginStart="50dp"
android:layout_marginEnd="50dp"
android:layout_marginBottom="40dp"

View File

@ -13,7 +13,7 @@
android:id="@+id/viewHeaderBg"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/surface"
android:background="@color/cardSurface"
android:elevation="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/headerBarrier"
@ -178,7 +178,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/binding_machine"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -211,7 +211,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/system_setting"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -244,7 +244,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/product_list"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -277,7 +277,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/cargo_lane_management"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -310,7 +310,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/shopping_platform"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -399,7 +399,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/set_value_detection"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -432,7 +432,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/infor_debug_window"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -465,7 +465,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/card_machine_checkout"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -498,7 +498,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/card_machine_restart"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -531,7 +531,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/scan_dock_test"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -564,7 +564,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/slave_machine_software"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -597,7 +597,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="紙鈔/現金模組"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -631,7 +631,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/slave_machine_detection"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -665,7 +665,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/electronic_controller_detection"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -699,7 +699,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="@string/other_test"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -732,7 +732,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="刪除本地端廣告"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -765,7 +765,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="重啟APP"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"
@ -798,7 +798,7 @@
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:backgroundTint="@color/surface"
android:backgroundTint="@color/cardSurface"
android:text="進入安卓設定頁"
android:textColor="@color/black"
android:textSize="@dimen/menu_btn_text_size"

View File

@ -6,26 +6,83 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.ProductSearchActivity"
android:background="@color/light_gray">
android:background="@color/background">
<SearchView
android:id="@+id/searchProductList"
<LinearLayout
android:id="@+id/topControlLayout"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/textview_border"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_height="wrap_content"
android:background="@color/cardSurface"
android:elevation="8dp"
android:orientation="vertical"
android:paddingBottom="16dp"
app:layout_constraintTop_toTopOf="parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerSearchText"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="1dp"
android:background="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/searchProductList" />
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="選擇商品"
android:textColor="@color/black"
android:textSize="28sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<SearchView
android:id="@+id/searchProductList"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/textview_border"
android:queryHint="請輸入商品名稱來搜尋"
android:searchIcon="@null"
android:iconifiedByDefault="false" />
<Button
android:id="@+id/buttonClear"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginStart="8dp"
android:backgroundTint="@color/warning"
android:textColor="@color/onWarning"
app:cornerRadius="8dp"
android:text="清除"
android:textSize="24sp" />
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="8dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerSearchText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
<TextView
android:id="@+id/textSearchStatus"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="請輸入您要搜尋的文字"
android:textColor="@color/black"
android:textSize="18sp"
android:visibility="visible" />
</FrameLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerProductSearch"
@ -33,35 +90,50 @@
android:layout_height="0dp"
android:layout_marginTop="1dp"
android:layout_marginBottom="0dp"
app:layout_constraintBottom_toTopOf="@id/linearLayout2"
app:layout_constraintTop_toBottomOf="@+id/recyclerSearchText"
app:layout_constraintBottom_toTopOf="@+id/bottomControlLayout"
app:layout_constraintTop_toBottomOf="@+id/topControlLayout"
app:layout_constraintVertical_bias="1.0">
</androidx.recyclerview.widget.RecyclerView>
<LinearLayout
android:id="@+id/linearLayout2"
android:id="@+id/bottomControlLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:orientation="vertical"
android:padding="8dp"
android:background="@color/cardSurface"
android:elevation="16dp"
app:layout_constraintBottom_toBottomOf="parent">
<Button
android:id="@+id/buttonBack"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/black"
android:text="返回"
android:textSize="24dp"/>
android:orientation="horizontal">
<Button
android:id="@+id/buttonOk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/black"
android:text="確定"
android:textSize="24dp"/>
<Button
android:id="@+id/buttonBack"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/gray"
android:textColor="@color/black"
android:layout_marginEnd="8dp"
app:cornerRadius="8dp"
android:text="返回"
android:textSize="24dp" />
<Button
android:id="@+id/buttonOk"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:backgroundTint="@color/primary"
android:textColor="@color/onPrimary"
android:text="確定"
app:cornerRadius="8dp"
android:textSize="24dp" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -5,87 +5,96 @@
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/light_gray"
android:background="@color/background"
tools:context=".ui.devs.vmc.VmcSlotListActivity">
<LinearLayout
android:id="@+id/linearLayout1"
android:id="@+id/topControlLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/cardSurface"
android:elevation="8dp"
android:orientation="vertical"
android:paddingBottom="16dp"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/buttonGotoVmcSlotList"
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone"
android:backgroundTint="@color/black"
android:text="智販機"
android:textSize="24dp" />
<Button
android:id="@+id/buttonoOneClickReplenishment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/black"
android:text="一鍵補貨"
android:textSize="24dp"/>
<Button
android:id="@+id/buttonGotoElectricSlotList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone"
android:backgroundTint="@color/gray"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="貨道管理"
android:textColor="@color/black"
android:text="桌遊開桌空間出租" />
android:textSize="28sp"
android:textStyle="bold" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerSlotList"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
app:layout_constraintTop_toBottomOf="@+id/linearLayout1" />
android:layout_marginTop="8dp"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="3"
app:layout_constraintBottom_toTopOf="@+id/bottomControlLayout"
app:layout_constraintTop_toBottomOf="@+id/topControlLayout"
app:layout_constraintVertical_bias="0.0"
tools:layout_editor_absoluteX="0dp" />
<LinearLayout
android:id="@+id/linearLayout"
android:id="@+id/bottomControlLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:orientation="vertical"
android:padding="8dp"
android:background="@color/cardSurface"
android:elevation="16dp"
app:layout_constraintBottom_toBottomOf="parent">
<Button
android:id="@+id/buttonBack"
android:layout_width="0dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone"
android:backgroundTint="@color/black"
android:text="返回"
android:textSize="28dp"/>
android:orientation="horizontal">
<Button
android:id="@+id/buttonSave"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/black"
android:text="@string/upload_to_backend_and_return"
android:textSize="28dp" />
<Button
android:id="@+id/buttonBack"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone"
android:text="返回"
android:textSize="24dp" />
<Button
android:id="@+id/buttonReload"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone"
android:backgroundTint="@color/black"
android:text="清空" />
<Button
android:id="@+id/buttonReload"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone"
android:text="清空" />
<Button
android:id="@+id/buttonoOneClickReplenishment"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginEnd="8dp"
android:backgroundTint="@color/gray"
android:textColor="@color/black"
android:text="一鍵補貨"
android:textSize="24dp" />
<Button
android:id="@+id/buttonSave"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/primary"
android:textColor="@color/onPrimary"
android:text="儲存"
android:textSize="24dp" />
</LinearLayout>
</LinearLayout>
<!-- 中央浮動進度區塊 (預設隱藏) -->

View File

@ -20,7 +20,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/passcode"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="@string/enter_passcode_or_scan_qrcode"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -4,7 +4,7 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="36dp"
android:background="@color/surface">
android:background="@color/cardSurface">
<!-- 標題 -->
<TextView
@ -14,7 +14,7 @@
android:text="登入後台管理帳號"
android:textSize="28sp"
android:textStyle="bold"
android:textColor="@color/onSurface"
android:textColor="@color/black"
android:layout_marginBottom="24dp" />
<!-- 帳號標籤 -->
@ -23,7 +23,7 @@
android:layout_height="wrap_content"
android:text="管理員帳號"
android:textSize="22sp"
android:textColor="@color/onSurfaceVariant"
android:textColor="@color/info"
android:layout_marginBottom="8dp"
android:layout_marginStart="4dp" />
@ -45,7 +45,7 @@
android:layout_height="wrap_content"
android:text="管理員密碼"
android:textSize="22sp"
android:textColor="@color/onSurfaceVariant"
android:textColor="@color/info"
android:layout_marginBottom="8dp"
android:layout_marginStart="4dp" />
@ -69,7 +69,7 @@
android:layout_height="wrap_content"
android:text="記住帳號"
android:textSize="22sp"
android:textColor="@color/onSurfaceVariant"
android:textColor="@color/info"
android:layout_marginBottom="28dp" />
<!-- 按鈕區塊 -->

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/cart"
android:visibility="gone"
@ -45,7 +45,7 @@
android:layout_weight="0.3"
android:gravity="center"
android:text="@string/total_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -57,7 +57,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/shopping_cart_cash_checkout"
android:textColor="@color/white"
@ -42,7 +42,7 @@
android:layout_weight="1.10"
android:gravity="center|end"
android:text="@string/transaction_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -54,7 +54,7 @@
android:layout_weight="0.90"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
@ -73,7 +73,7 @@
android:layout_weight="1.10"
android:gravity="center|end"
android:text="@string/amount_invested"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -85,7 +85,7 @@
android:layout_weight="0.90"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="現金支付"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.1"
android:gravity="center|end"
android:text="訂單金額:"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="40sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.9"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="40sp"
android:textStyle="bold" />
</LinearLayout>
@ -75,7 +75,7 @@
android:layout_weight="0.90"
android:gravity="center"
android:text="請投入硬幣或紙鈔"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="80sp"
android:textStyle="bold" />
<ImageView

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/shopping_cart_esun_payment_checkout"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.10"
android:gravity="center|end"
android:text="@string/transaction_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.90"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
@ -75,7 +75,7 @@
android:layout_weight="0.90"
android:gravity="center"
android:text="@string/transaction_status"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/shopping_cart_linepay_checkout"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.10"
android:gravity="center|end"
android:text="@string/transaction_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.90"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
@ -76,7 +76,7 @@
android:layout_weight="0.90"
android:gravity="center"
android:text="@string/transaction_status"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/shopping_cart_credit_card_checkout"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.1"
android:gravity="center|end"
android:text="@string/transaction_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.90"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
@ -75,7 +75,7 @@
android:layout_weight="0.90"
android:gravity="center"
android:text="@string/transaction_status"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/shopping_cart_mobile_payment_checkout"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.1"
android:gravity="center|end"
android:text="@string/transaction_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.9"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
@ -75,7 +75,7 @@
android:layout_weight="0.90"
android:gravity="center"
android:text="@string/transaction_status"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/shopping_cart_merchant_payment_checkout"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.1"
android:gravity="center|end"
android:text="@string/transaction_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.90"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
@ -75,7 +75,7 @@
android:layout_weight="0.90"
android:gravity="center"
android:text="@string/transaction_status"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/tappay_checkout"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1.10"
android:gravity="center|end"
android:text="交易金額:"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:layout_weight="0.90"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
@ -75,7 +75,7 @@
android:layout_weight="0.90"
android:gravity="center"
android:text="QRCode產生中請等待片刻"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -20,7 +20,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/passcode"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="@string/enter_passcode_or_scan_qrcode"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -20,7 +20,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/invoice_account"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="@string/input_unified_number"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -4,15 +4,16 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:background="@color/light_gray">
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="0dp"
android:background="@color/light_gray"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@ -21,10 +22,10 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/gray"
android:gravity="center"
android:text="@string/shopping_cart_checkout"
android:textColor="@color/white"
android:text="@string/dispatch_progress"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold" />
@ -44,14 +45,16 @@
android:layout_weight="1.15"
android:gravity="center"
android:text="@string/shipping_goods"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/background"
android:gravity="center"
android:orientation="vertical">
@ -67,130 +70,67 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerDialogDispatchList"
android:layout_width="match_parent"
android:layout_height="450dp" />
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:orientation="vertical"
android:gravity="center"
android:background="@color/gray"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
android:background="@color/cardSurface"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:gravity="center"
android:text="@string/shipping_goods"
android:background="@color/primary"
android:text="@string/processing"
android:textSize="20sp"
android:textColor="@color/white"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginStart="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
android:textColor="@color/onPrimary" />
<RelativeLayout
<ImageView
android:id="@+id/imageProductPicture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintDimensionRatio="16:9"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:gravity="center">
<ImageView
android:id="@+id/imageProductPicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/default_product"
app:layout_constraintDimensionRatio="16:9"
/>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:orientation="vertical"
android:gravity="center"
android:background="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
android:layout_height="240dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:src="@drawable/default_product" />
<TextView
android:id="@+id/textProductName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="50dp"
android:gravity="center"
android:text="@string/product_name"
android:textSize="24sp"
android:textColor="@color/black"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:orientation="vertical"
android:gravity="center"
android:background="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
android:textColor="@color/black" />
<TextView
android:id="@+id/dispatchtips"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="180dp"
android:gravity="center"
android:text="@string/pick_up_goods_within_15_seconds_after_pick_up_port_opened"
android:textSize="65sp"
android:textColor="@color/red"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:orientation="horizontal">
android:textColor="@color/primary" />
<Button
android:id="@+id/buttonOk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/white"
android:layout_height="50dp"
android:backgroundTint="@color/warning"
android:text="@string/cancel_40"
android:textSize="20sp"
android:textColor="@color/black" />
android:textColor="@color/onWarning" />
</LinearLayout>
</LinearLayout>

View File

@ -20,7 +20,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/gifts"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="@string/enter_gift_or_scan_qrcode"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -20,7 +20,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/invoice_account"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="@string/scan_vehicle"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/select_combination"
android:textColor="@color/white"

View File

@ -9,80 +9,76 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/light_gray"
android:background="@color/cardSurface"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<!-- 標題列 -->
<TextView
android:id="@+id/textViewTitle"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/primary"
android:gravity="center"
android:text="@string/member_card_pickup_title"
android:textColor="@color/white"
android:textColor="@color/onPrimary"
android:textSize="24sp"
android:textStyle="bold" />
<!-- 資訊區:金額、提示文字、交易狀態 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginBottom="1dp"
android:layout_height="wrap_content"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical">
android:layout_marginBottom="1dp"
android:orientation="vertical"
android:paddingVertical="30dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="無需付款"
android:textColor="@color/primary"
android:textSize="40sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="請將員工卡靠近讀卡機"
android:textColor="@color/primary"
android:textSize="25sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/please_tap_member_card"
android:textColor="@color/red"
android:textSize="35sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textDetectedCardNo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text=""
android:text="交易狀態:等待感應"
android:textColor="@color/black"
android:textSize="25sp" />
android:textSize="15sp" />
</LinearLayout>
<!-- 卡號輸入區 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@color/white"
android:orientation="vertical">
<ImageView
android:id="@+id/imageNfc"
android:layout_width="match_parent"
android:layout_height="250dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
app:srcCompat="@drawable/checkout_nfc_card" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:gravity="center"
android:background="@color/white"
android:orientation="vertical">
android:layout_marginBottom="1dp"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="感應卡號:"
android:text="卡號資訊:"
android:textSize="20sp"
android:textColor="@color/black" />
@ -96,34 +92,70 @@
android:hint="請感應卡片"
android:inputType="text"
android:textSize="30sp"
android:textColor="@color/red"
android:textColor="@color/primary"
android:textStyle="bold"
android:focusable="true"
android:focusableInTouchMode="true" />
</LinearLayout>
<!-- 支援方式示意圖區 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_marginBottom="1dp"
android:gravity="center"
android:orientation="horizontal">
android:orientation="vertical"
android:paddingVertical="12dp">
<Button
<ImageView
android:layout_width="match_parent"
android:layout_height="180dp"
android:background="@null"
android:scaleType="fitCenter"
app:srcCompat="@drawable/payment_accepted_types_idcard" />
</LinearLayout>
<!-- 提示圖區(滿版) -->
<ImageView
android:id="@+id/imageNfc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
app:srcCompat="@drawable/payment_channel_idcard" />
<!-- 底部按鈕列 -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp">
<com.google.android.material.button.MaterialButton
android:id="@+id/buttonCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/white"
style="@style/Widget.MaterialComponents.Button"
android:layout_width="match_parent"
android:layout_height="64dp"
android:paddingHorizontal="0dp"
android:backgroundTint="@color/warning"
android:text="@string/cancel_40"
android:textSize="20sp"
android:textColor="@color/black" />
<!-- Hidden simulation button for testing card 0640741922 -->
android:textColor="@color/white"
android:textSize="16sp"
app:elevation="4dp"
app:cornerRadius="8dp" />
<!-- 隱藏模擬按鈕 (測試卡號 0640741922) -->
<View
android:id="@+id/viewSimulateTap"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="end|center_vertical"
android:background="@android:color/transparent" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -21,7 +21,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/cart"
android:textColor="@color/white"
@ -44,7 +44,7 @@
android:layout_weight="1.15"
android:gravity="center|end"
android:text="@string/total_amount"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
@ -56,7 +56,7 @@
android:layout_weight="0.85"
android:gravity="center|start"
android:text="0"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -20,7 +20,7 @@
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/red"
android:background="@color/error"
android:gravity="center"
android:text="@string/pickup_code"
android:textColor="@color/white"
@ -43,7 +43,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="@string/enter_pickup_code_or_scan_qrcode"
android:textColor="@color/red"
android:textColor="@color/error"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -4,14 +4,14 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:background="@color/background"
tools:context=".ui.devs.electric.ElectricFragment">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerBuy"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/light_gray"
android:background="@color/background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -4,14 +4,14 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:background="@color/background"
tools:context=".ui.devs.vmc.VmcFragment">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerBuy"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/light_gray"
android:background="@color/background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -117,7 +117,7 @@
android:gravity="center"
android:text="NT $0"
android:textSize="80sp"
android:textColor="@color/red"
android:textColor="@color/error"
android:textStyle="bold" />
<TextView

View File

@ -1,136 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView 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:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="1dp"
android:paddingBottom="1dp"
>
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
app:cardBackgroundColor="@color/cardSurface"
app:cardCornerRadius="8dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="wrap_content"
android:minHeight="70dp"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingTop="1dp"
android:paddingBottom="1dp">
<TextView
android:id="@+id/textSlot"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="0.3"
android:gravity="center"
android:text="0"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="visible" />
<ImageView
android:id="@+id/imageProductPicture"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/default_product" />
<!-- 商品名稱 + 出貨狀況標籤(垂直排列) -->
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/textSlot"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="0.3"
android:gravity="center"
android:text="0"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="visible" />
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_weight="1">
<ImageView
android:id="@+id/imageProductPicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/default_product"
app:layout_constraintDimensionRatio="16:9" />
</RelativeLayout>
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:orientation="vertical"
android:gravity="center_vertical">
<TextView
android:id="@+id/textProductName"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="3"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:text="@string/product_name"
android:textColor="@color/black"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textCount"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:gravity="right|center"
android:text="0"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:text="/"
android:textSize="24sp"
android:textStyle="bold" />
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5">
<TextView
android:id="@+id/textQuantity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left|center"
android:text="0"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
<TextView
android:id="@+id/textDelete"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/delete"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:background="@color/white"
android:orientation="horizontal">
<TextView
android:id="@+id/textDispatchStatus"
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center"
android:layout_weight="2"
android:layout_marginTop="4dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:text="@string/shipping_status"
android:textSize="24sp"/>
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="@+id/textCount"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.5"
android:gravity="center"
android:text="已出貨數量0 / 0"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textDelete"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/delete"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="gone" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -61,7 +61,7 @@
android:id="@+id/textProductName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent_white"
android:background="#80FFFFFF"
android:gravity="center"
android:text="@string/product_name"
android:textSize="20sp" />

View File

@ -1,70 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView 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/cardProduct"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="1dp"
android:paddingBottom="1dp"
>
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
app:cardCornerRadius="12dp"
app:cardElevation="4dp"
app:cardBackgroundColor="@color/background"
app:strokeColor="@color/gray"
app:strokeWidth="1dp">
<LinearLayout
android:id="@+id/linearLayout"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:background="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textProductId"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/product_number"
android:textSize="16sp"
android:textStyle="bold" />
android:layout_height="wrap_content"
android:paddingBottom="16dp">
<!-- 圖片區域 1:1 -->
<ImageView
android:id="@+id/imageProductPicture"
android:layout_width="110dp"
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_height="0dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:scaleType="centerCrop"
android:src="@drawable/default_product"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- 商品編號標籤 (左上角) -->
<TextView
android:id="@+id/textProductName"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="4"
android:gravity="center"
android:text="@string/product_name"
android:textSize="16sp"
android:textStyle="bold" />
<Button
android:id="@+id/buttonSlotProductSelect"
android:id="@+id/textProductId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.9"
android:backgroundTint="@color/black"
android:textColor="@color/white"
android:text="@string/choose" />
</LinearLayout>
android:layout_marginTop="8dp"
android:layout_marginStart="8dp"
android:background="@color/primary"
android:paddingHorizontal="10dp"
android:paddingVertical="4dp"
android:textColor="@color/onPrimary"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- 商品名稱 -->
<TextView
android:id="@+id/textProductName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginHorizontal="12dp"
android:ellipsize="end"
android:maxLines="2"
android:minLines="1"
android:text="@string/product_name"
android:textColor="@color/black"
android:textSize="22sp"
android:textStyle="bold"
android:gravity="center"
app:layout_constraintTop_toBottomOf="@id/imageProductPicture" />
<!-- 保留隱藏的按鈕 ID 避免 Adapter 崩潰,但設為 GONE -->
<Button
android:id="@+id/buttonSlotProductSelect"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -12,9 +12,11 @@
android:layout_height="wrap_content"
android:text="@string/click"
android:textSize="20sp"
android:backgroundTint="@color/black"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
android:textColor="@color/black"
android:background="@drawable/button_outline_black"
android:backgroundTint="@null"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@ -1,123 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.cardview.widget.CardView 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:layout_width="match_parent"
android:layout_height="350dp">
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="2dp">
<LinearLayout
android:id="@+id/linearLayout"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:padding="1dp"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
android:layout_height="wrap_content">
<RelativeLayout
<!-- 商品圖片 1:1 -->
<ImageView
android:id="@+id/imageProductPicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintDimensionRatio="16:9"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:gravity="center">
android:layout_height="0dp"
android:src="@drawable/default_product"
android:scaleType="centerCrop"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/imageProductPicture"
android:layout_width="1876dp"
android:layout_height="323dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/default_product"
app:layout_constraintDimensionRatio="16:9" />
</RelativeLayout>
</LinearLayout>
<!-- 貨道資訊 (左上角) -->
<TextView
android:id="@+id/textSlot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:background="@color/primary"
android:text="貨道: 01"
android:textColor="@color/onPrimary"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:padding="1dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<!-- 庫存資訊 (右下角) -->
<TextView
android:id="@+id/textStock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:background="@color/gray"
android:text="庫存: 0"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageProductPicture"
app:layout_constraintEnd_toEndOf="@+id/imageProductPicture" />
<!-- 商品名稱 -->
<TextView
android:id="@+id/textProductName"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/transparent_white"
android:gravity="center"
android:layout_marginTop="12dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:ellipsize="end"
android:singleLine="true"
android:text="@string/product_name"
android:textSize="20sp" />
</LinearLayout>
<TextView
android:id="@+id/textSlot"
android:layout_width="50dp"
android:layout_height="30dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/rounded_background"
android:gravity="center"
android:text="000"
android:textColor="@color/white"
android:textSize="20sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textPrice"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:background="@drawable/rounded_background_red"
android:gravity="center"
android:text="NT$ 000"
android:textColor="@color/white"
android:textSize="20sp"
app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
app:layout_constraintEnd_toEndOf="@+id/linearLayout" />
<LinearLayout
android:id="@+id/mask"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:visibility="visible"
android:background="@color/transparent_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textMask"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/product_sold_out"
android:textColor="@color/white"
android:textColor="@color/black"
android:textSize="24sp"
android:textStyle="bold"
android:textSize="30sp"/>
</LinearLayout>
app:layout_constraintTop_toBottomOf="@+id/imageProductPicture"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- 商品價格 (左下角) -->
<TextView
android:id="@+id/textPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="16dp"
android:layout_marginBottom="16dp"
android:text="NT$ 000"
android:textColor="@color/primary"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintTop_toBottomOf="@+id/textProductName"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<!-- 售罄覆蓋層 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/mask"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/transparent_black"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/textMask"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/product_sold_out"
android:textColor="@color/white"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

View File

@ -1,104 +1,211 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.card.MaterialCardView
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:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="1dp"
android:paddingBottom="1dp"
>
android:layout_margin="6dp"
app:cardCornerRadius="8dp"
app:cardElevation="3dp"
app:cardBackgroundColor="@color/cardSurface"
app:strokeWidth="0dp">
<LinearLayout
android:id="@+id/linearLayout"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="110dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:background="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
android:layout_height="wrap_content"
android:padding="15dp">
<!-- 第一列:貨道編號 | 啟用狀態 -->
<TextView
android:id="@+id/textSlot"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_weight="1"
android:text="@string/lane_number"
android:textSize="24sp"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:textStyle="bold"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textSize="15sp"
android:textStyle="bold"
android:text="貨道1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/layoutLock" />
<LinearLayout
android:id="@+id/layoutLock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/textLockStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="@color/black"
android:text="販售中" />
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/textLock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="0.8"
android:scaleY="0.8"
app:switchPadding="0dp"
app:thumbTint="@color/switch_thumb_selector"
app:trackTint="@color/switch_track_selector" />
</LinearLayout>
<!-- 第二列:圖片區域 1:1 -->
<ImageView
android:id="@+id/imageProduct"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/slot_no_product"
app:layout_constraintTop_toBottomOf="@id/layoutLock"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="1:1"
android:layout_marginTop="16dp"
android:scaleType="centerCrop"
android:background="#0D000000" /> <!-- 預留空間灰色透明度5% -->
<View
android:id="@+id/viewProductMask"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/transparent_black"
app:layout_constraintTop_toTopOf="@id/imageProduct"
app:layout_constraintBottom_toBottomOf="@id/imageProduct"
app:layout_constraintStart_toStartOf="@id/imageProduct"
app:layout_constraintEnd_toEndOf="@id/imageProduct"
android:visibility="gone" />
<!-- 第三列:商品名稱(點擊可選擇商品) -->
<TextView
android:id="@+id/textProductName"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:gravity="center"
android:paddingHorizontal="0dp"
android:paddingVertical="0dp"
android:background="@null"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/product_name"
android:textSize="24sp"
android:textStyle="bold" />
app:layout_constraintTop_toBottomOf="@id/imageProduct"
android:layout_marginTop="0dp" />
<!-- 第四列:庫存數量控制列 - Minus -->
<com.google.android.material.button.MaterialButton
android:id="@+id/buttonCountMinus"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="0dp"
android:text=""
android:textSize="30sp"
app:backgroundTint="@color/background"
android:textColor="@color/primary"
app:layout_constraintTop_toBottomOf="@+id/textProductName"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/textCount" />
<!-- 庫存數量控制列 - Count -->
<TextView
android:id="@+id/textCount"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:gravity="center"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:text="@string/amount"
android:textSize="24sp"
android:textStyle="bold"/>
android:textSize="22sp"
android:textStyle="bold"
android:textColor="@color/black"
android:text="0"
app:layout_constraintTop_toTopOf="@+id/buttonCountMinus"
app:layout_constraintBottom_toBottomOf="@+id/buttonCountMinus"
app:layout_constraintStart_toEndOf="@+id/buttonCountMinus"
app:layout_constraintEnd_toStartOf="@+id/buttonCountPlus" />
<EditText
android:id="@+id/editCount"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:gravity="center"
android:focusableInTouchMode="true"
android:focusable="true"
android:descendantFocusability="blocksDescendants"
android:text="0"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:inputType="number"
android:visibility="gone"
android:textSize="24sp"
android:inputType="numberPassword"
android:textSize="22sp"
android:textStyle="bold"
android:textColor="@color/black"
android:visibility="gone"
android:focusable="true"
android:focusableInTouchMode="true"
android:imeOptions="actionSend"
>
</EditText>
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="@+id/buttonCountMinus"
app:layout_constraintBottom_toBottomOf="@+id/buttonCountMinus"
app:layout_constraintStart_toEndOf="@+id/buttonCountMinus"
app:layout_constraintEnd_toStartOf="@+id/buttonCountPlus" />
<!-- 庫存數量控制列 - Plus -->
<com.google.android.material.button.MaterialButton
android:id="@+id/buttonCountPlus"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="60dp"
android:text="+"
android:textSize="24sp"
android:paddingHorizontal="0dp"
app:backgroundTint="@color/background"
android:textColor="@color/primary"
app:layout_constraintTop_toTopOf="@+id/buttonCountMinus"
app:layout_constraintBottom_toBottomOf="@+id/buttonCountMinus"
app:layout_constraintStart_toEndOf="@+id/textCount"
app:layout_constraintEnd_toEndOf="parent" />
<!-- 第五列:按鈕 -->
<LinearLayout
android:id="@+id/layoutButtons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
app:layout_constraintTop_toBottomOf="@+id/buttonCountMinus">
<com.google.android.material.button.MaterialButton
android:id="@+id/textDelete"
style="@style/Widget.MaterialComponents.Button"
app:backgroundTint="@color/warning"
android:textColor="@color/onWarning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="清空貨道" />
</LinearLayout>
<!-- 隱藏元件,保留避免崩潰 -->
<Button
android:id="@+id/buttonRestocking"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="補貨"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/buttonCountMinus"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:id="@+id/textLock"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/lock"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:textColor="@color/light_gray"
android:textSize="24sp"
android:textStyle="bold"/>
android:id="@+id/textIsZg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购物车"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/buttonRestocking"
app:layout_constraintStart_toStartOf="parent"/>
<TextView
android:id="@+id/textDelete"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/delete"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:textSize="24sp"
android:textStyle="bold"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View File

@ -1,5 +1,5 @@
<resources>
<string name="app_name">Taiwan Star</string>
<string name="app_name">StarCloud</string>
<string name="title_activity_fontend">FontendActivity</string>
<string name="title_home">Home</string>
<string name="title_dashboard">Dashboard</string>
@ -274,6 +274,8 @@
<string name="input_complete">Input Complete</string>
<!-- dialog_dispatch.xml -->
<string name="shipping_goods">Shipping goods</string>
<string name="processing">Processing</string>
<string name="dispatch_progress">Shipping Progress</string>
<string name="product_name">Product Name</string>
<string name="error_report">Error Report</string>
<!-- dialog_invoice_barcode.xml -->

View File

@ -1,5 +1,5 @@
<resources>
<string name="app_name">Taiwan Star</string>
<string name="app_name">StarCloud</string>
<string name="title_activity_fontend">FontendActivity</string>
<string name="title_home">表紙</string>
<string name="title_dashboard">ダッシュボード</string>
@ -274,6 +274,8 @@
<string name="input_complete">入力完了</string>
<!-- dialog_dispatch.xml -->
<string name="shipping_goods">商品の発送</string>
<string name="processing">処理中</string>
<string name="dispatch_progress">出荷進度</string>
<string name="product_name">製品名</string>
<string name="error_report">エラーレポート</string>
<!-- dialog_invoice_barcode.xml -->

View File

@ -2,6 +2,5 @@
<!-- Base application theme. -->
<style name="Base.Theme.SmartDevice" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your dark theme here. -->
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
</style>
</resources>

View File

@ -1,64 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#272727</color>
<color name="white">#FFFFFFFF</color>
<color name="red">#FFFF0000</color>
<color name="light_gray">#FFA9A9A9</color>
<color name="gray">#FFCCCCCC</color>
<color name="transparent_black">#AA000000</color>
<color name="transparent_white">#80FFFFFF</color>
<color name="transparent">#00000000</color>
<!-- 全域系統色彩系統 (Material 3 標準色系 - 沉穩藍視角) -->
<!-- Primary 主色 (#005DAD) -->
<!-- ═══════════════════════════════════════════
基礎色(骨幹,直接使用)
═══════════════════════════════════════════ -->
<color name="black">#272727</color> <!-- 主要文字、邊框 -->
<color name="white">#FFFFFF</color> <!-- 背景、反色文字 -->
<color name="light_gray">#A9A9A9</color> <!-- 停用狀態 -->
<color name="gray">#CCCCCC</color> <!-- 邊框、分隔線 -->
<!-- ═══════════════════════════════════════════
工具色
═══════════════════════════════════════════ -->
<color name="transparent_black">#AA000000</color> <!-- 遮罩層 -->
<!-- ═══════════════════════════════════════════
語意色(兩層架構:色 / on色
on色 = 該背景色上方的文字或圖示顏色
═══════════════════════════════════════════ -->
<!-- Primary 主色 -->
<color name="primary">#005DAD</color>
<color name="onPrimary">#FFFFFF</color>
<color name="primaryContainer">#D1E4FF</color>
<color name="onPrimaryContainer">#001D36</color>
<!-- Secondary 次色 (藍灰色調) -->
<color name="secondary">#535F70</color>
<color name="onSecondary">#FFFFFF</color>
<color name="secondaryContainer">#D7E3F7</color>
<color name="onSecondaryContainer">#101C2B</color>
<!-- Semantic: Success 成功狀態 -->
<color name="success">#2E7D32</color>
<color name="onSuccess">#FFFFFF</color>
<color name="successContainer">#C8E6C9</color>
<color name="onSuccessContainer">#003300</color>
<!-- Semantic: Warning 警告狀態 -->
<color name="warning">#EF6C00</color>
<color name="onWarning">#FFFFFF</color>
<color name="warningContainer">#FFE0B2</color>
<color name="onWarningContainer">#4A2600</color>
<!-- Semantic: Error / Dangerous 錯誤與危險狀態 -->
<color name="error">#BA1A1A</color>
<color name="onError">#FFFFFF</color>
<color name="errorContainer">#FFDAD6</color>
<color name="onErrorContainer">#410002</color>
<!-- Semantic: Info 提示狀態 -->
<!-- Info 提示(次要說明、補充資訊) -->
<color name="info">#00639B</color>
<color name="onInfo">#FFFFFF</color>
<color name="infoContainer">#D1E4FF</color>
<color name="onInfoContainer">#001D35</color>
<!-- Background & Surface 背景與表面 (調整為微冷調白) -->
<color name="paperColor">#F5F7FA</color>
<!-- Success 成功 -->
<color name="success">#2E7D32</color>
<color name="onSuccess">#FFFFFF</color>
<color name="surface">#F8F9FF</color>
<color name="onSurface">#191C1E</color>
<color name="surfaceVariant">#DFE2EB</color>
<color name="onSurfaceVariant">#43474E</color>
<!-- Warning 警告 -->
<color name="warning">#EF6C00</color>
<color name="onWarning">#FFFFFF</color>
<color name="background">#F8F9FF</color>
<color name="onBackground">#191C1E</color>
<!-- Error 錯誤 -->
<color name="error">#BA1A1A</color>
<color name="onError">#FFFFFF</color>
<!-- ═══════════════════════════════════════════
背景與表面
═══════════════════════════════════════════ -->
<color name="background">#F8F9FF</color> <!-- 頁面底層背景 -->
<color name="cardSurface">#FFFFFF</color> <!-- 卡片、對話框(與背景形成層次區隔) -->
<color name="outline">#73777F</color> <!-- 邊框線 -->
<!-- Outlines & Dividers 邊框與分隔線 -->
<color name="outline">#73777F</color>
<color name="outlineVariant">#C3C7CF</color>
<color name="divider">#DFE2EB</color>
</resources>

View File

@ -1,5 +1,5 @@
<resources>
<string name="app_name">Taiwan Star</string>
<string name="app_name">StarCloud</string>
<string name="title_activity_fontend">FontendActivity</string>
<string name="title_home">Home</string>
<string name="title_dashboard">Dashboard</string>
@ -184,6 +184,8 @@
<string name="input_complete">輸入完成</string>
<!-- dialog_dispatch.xml -->
<string name="shipping_goods">出貨商品</string>
<string name="processing">正在處理</string>
<string name="dispatch_progress">出貨進度</string>
<string name="product_name">商品名稱</string>
<string name="error_report">錯誤回報</string>
<!-- dialog_invoice_barcode.xml -->
@ -300,7 +302,7 @@
<string name="there_is_something_at_the_pickup_port">取貨口有東西,請先取出</string>
<string name="i_knew">知道了</string>
<string name="input_vehicle">輸入載具</string>
<string name="member_card_pickup_title">領取確認</string>
<string name="member_card_pickup_title">員工卡支付</string>
<string name="please_tap_member_card">請將員工卡靠近讀卡機</string>
<string name="sync_product">下載商品資料</string>
<string name="sync_product_warning">確定要從雲端下載商品資料嗎?這將會更新所有商品的品名、價格與圖片,並覆蓋目前的資訊。</string>

View File

@ -2,7 +2,6 @@
<!-- Base application theme. -->
<style name="Base.Theme.SmartDevice" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. -->
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
</style>
<style name="Theme.SmartDevice" parent="Base.Theme.SmartDevice" />