From f41d4186ead291acd3164c3bd94c92f3df4985e4 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Tue, 13 Oct 2026 02:29:33 -0700 Subject: [PATCH] =?UTF-8?q?style(gjc):=20=E5=BC=80=E5=A7=8B=E7=BB=84?= =?UTF-8?q?=E8=A3=85=E9=A1=B5=E8=BF=90=E5=8D=95=E5=88=97=E8=A1=A8=205=20?= =?UTF-8?q?=E5=88=97=E9=97=B4=E8=B7=9D=E5=9D=87=E5=88=86=EF=BC=8C=E8=A1=A8?= =?UTF-8?q?=E5=A4=B4=E4=B8=A4=E7=A7=8D=E7=8A=B6=E6=80=81=E5=90=84=E7=94=A8?= =?UTF-8?q?=E4=B8=80=E5=A5=97=E5=88=97=E5=AE=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 AssembleWaybillColumns:「件数/重量」与「剩余件数/总件数」两种表头状态 各一套列宽,表头按 hasLoadedOnce、列表项按 showRemaining 切换,保证列对齐 - 件数与重量之间加弹性间隔;剩余态重量列放宽到 140dp,大重量不换行 - module_base 新增通用 layoutWeight 绑定适配器 Co-Authored-By: Claude Opus 5.5 --- .../module_base/adapter/ViewAdapter.kt | 13 +++++++++ .../page/assemble/AssembleWaybillColumns.kt | 27 +++++++++++++++++++ .../activity_int_exp_assemble_start.xml | 18 ++++++++++--- .../main/res/layout/item_assemble_waybill.xml | 18 ++++++++++--- 4 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/AssembleWaybillColumns.kt diff --git a/module_base/src/main/java/com/lukouguoji/module_base/adapter/ViewAdapter.kt b/module_base/src/main/java/com/lukouguoji/module_base/adapter/ViewAdapter.kt index cf618a3..a5a1415 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/adapter/ViewAdapter.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/adapter/ViewAdapter.kt @@ -2,6 +2,7 @@ package com.lukouguoji.module_base.adapter import android.view.View import android.widget.EditText +import android.widget.LinearLayout import androidx.databinding.BindingAdapter import com.lukouguoji.module_base.interfaces.IOnFocusChangeListener @@ -27,6 +28,18 @@ fun visible(view: View, visible: Any?) { } } +/** + * 动态设置 LinearLayout 子 View 的 layout_weight(如按状态切换列宽) + */ +@BindingAdapter("layoutWeight") +fun setLayoutWeight(view: View, weight: Float) { + val lp = view.layoutParams as? LinearLayout.LayoutParams ?: return + if (lp.weight != weight) { + lp.weight = weight + view.layoutParams = lp + } +} + @BindingAdapter("setFocusChangedListener") fun setOnFocusChangeListener(et: EditText, listener: IOnFocusChangeListener) { et.onFocusChangeListener = View.OnFocusChangeListener { v, hasFocus -> diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/AssembleWaybillColumns.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/AssembleWaybillColumns.kt new file mode 100644 index 0000000..4f4b53e --- /dev/null +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/page/assemble/AssembleWaybillColumns.kt @@ -0,0 +1,27 @@ +package com.lukouguoji.gjc.page.assemble + +/** + * 开始组装页「运单列表」列宽权重,表头与 item_assemble_waybill 共用以保证列对齐 + * + * 首次装货成功前后,件数/重量列表头文字长短差异很大(「件数」↔「剩余件数/总件数」), + * 一套列宽无法让两种状态下 5 列文字间距都均匀,故按状态各取一套。 + * 数值即平板(AutoSize 1152dp 基准)上各列的 dp 宽度;「选择」列固定 64dp 不在其中。 + */ +object AssembleWaybillColumns { + + const val WB_NO = 0 + const val PIECES = 1 + const val GAP = 2 // 件数与重量之间的间隔 + const val WEIGHT = 3 + const val FLIGHT = 4 + + /** 表头「件数 / 重量」 */ + private val TOTAL = floatArrayOf(237f, 72f, 76f, 72f, 250f) + + /** 表头「剩余件数/总件数 / 剩余重量/总重量」;重量列放宽到 140,容纳"120856.0/123456.0"不换行 */ + private val REMAINING = floatArrayOf(199f, 120f, 57f, 140f, 192f) + + @JvmStatic + fun weight(column: Int, showRemaining: Boolean): Float = + (if (showRemaining) REMAINING else TOTAL)[column] +} diff --git a/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml b/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml index c544a34..967316a 100644 --- a/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml +++ b/module_gjc/src/main/res/layout/activity_int_exp_assemble_start.xml @@ -11,6 +11,8 @@ + + @@ -179,7 +181,7 @@ + + + + + @@ -44,7 +46,7 @@ + + +