feat(activity): 弹窗食材/调料查询使用独立 StateFlow,新增调料列表双布局切换功能

- NetViewModel 新增 foodSearchGoodsListState 和 queryFoodSearchGoodsList,与 goodsListState 隔离
- FoodSearchDialog、SeasoningSelectDialog 改用弹窗专用 State,避免影响 FoodRecognizeActivity 列表
- SeasoningWeightAdapter 支持 Grid(4列)/List(2列)双布局模式
- SubmitFoodActivity 添加调料列表布局切换按钮
- FoodModule 变量重命名并添加未初始化保护
- 注释掉 mock 食材数据,调整相关布局边距与文字截断

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-12 15:17:54 +08:00
co-authored by Claude Sonnet 4.6
parent d412e03c6e
commit 5745791041
12 changed files with 181 additions and 54 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -16,22 +16,39 @@
android:background="@drawable/shape_white_30_corners"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginStart="22dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="30dp"
android:text="@string/seasoning"
android:textColor="@color/black666"
android:textSize="28sp" />
android:layout_marginEnd="22dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tvTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/seasoning"
android:textColor="@color/black666"
android:textSize="28sp" />
<ImageView
android:id="@+id/ivSeasoningLayoutToggle"
android:layout_width="50dp"
android:layout_height="50dp"
android:paddingVertical="8dp"
android:contentDescription="切换布局"
android:src="@drawable/ic_switch_box"
android:background="?android:attr/selectableItemBackgroundBorderless" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvSeasoning"
android:layout_width="match_parent"
android:layout_height="660dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_marginHorizontal="20dp"
tools:itemCount="26"
@@ -69,8 +69,6 @@
android:layout_width="match_parent"
android:layout_height="700dp"
android:layout_marginTop="10dp"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
app:srlEnableOverScrollDrag="false">
<com.scwang.smart.refresh.header.ClassicsHeader
@@ -81,6 +79,8 @@
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:nestedScrollingEnabled="true"
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginHorizontal="5dp"
android:layout_marginVertical="4dp"
android:paddingHorizontal="16dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:background="@drawable/shape_white_fb_15_corners2">
<TextView
android:id="@+id/tvSeasoningName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/black"
android:textSize="22sp"
android:textStyle="bold"
tools:text="土豆丝" />
<TextView
android:id="@+id/tvSeasoningWeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:textColor="@color/dish_green"
android:ellipsize="end"
android:maxLines="1"
android:textSize="22sp"
android:textStyle="bold"
tools:text="100g" />
</LinearLayout>
@@ -26,6 +26,8 @@
android:layout_height="wrap_content"
android:gravity="center"
android:includeFontPadding="false"
android:maxLines="3"
android:ellipsize="end"
android:textColor="@color/black"
android:textStyle="bold" />