From 5e46c214699265ab0ecd4c700e0676a2e8d23cd4 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Thu, 30 Apr 2026 11:40:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=E4=BF=AE=E5=A4=8D=E7=A9=BA=E6=80=81?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E8=B4=B4=E9=A1=B6=E5=8F=8A=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8A=A8=E7=94=BB=E6=97=A0=E6=B3=95=E5=85=B3=E9=97=AD=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../dish/match/ui/SamplingModeActivity.kt | 37 +++++++++++++------ .../match/ui/fragment/DishListFragment.kt | 10 ++++- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt index 06bf4ab..dd18ded 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import android.widget.FrameLayout import androidx.activity.addCallback import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope @@ -20,6 +21,7 @@ import com.shuwei.dish.match.dialog.CommonDialog import com.shuwei.dish.match.entity.FoodRecord import com.shuwei.dish.match.net.UiState import com.shuwei.dish.match.utils.DateTimeUtil +import com.shuwei.dish.match.utils.ext.dp import com.shuwei.dish.match.utils.ext.gone import com.shuwei.dish.match.utils.ext.startActivity import com.shuwei.dish.match.utils.ext.toast @@ -78,6 +80,7 @@ class SamplingModeActivity : BaseActivity() { list.clear() list.addAll(tempList) dishAdapter.notifyDataSetChanged() + finishRefresh() binding.refreshLayout.run { setEnableRefresh(false) setEnableLoadMore(false) @@ -231,18 +234,11 @@ class SamplingModeActivity : BaseActivity() { return SwipeMenuItem(this).apply { setImage(R.drawable.ic_trash_white) setBackground(R.drawable.bg_swipe_delete) - width = dp2px(160) + width = 160.dp height = ViewGroup.LayoutParams.MATCH_PARENT } } - /** - * dp 转 px - */ - private fun dp2px(dp: Int): Int { - return (dp * resources.displayMetrics.density + 0.5f).toInt() - } - @SuppressLint("ClickableViewAccessibility") private fun addViewListener() { binding.btnAddSampling.setOnClickListener { @@ -252,10 +248,19 @@ class SamplingModeActivity : BaseActivity() { } binding.refreshLayout.setOnRefreshListener { pageNo = 1 - getSamplingList() + if (binding.dishRadioGroup.checkedRadioButtonId == R.id.rbSamplingFinished) { + getSamplingList() + } else { + finishRefresh() + refreshLocalData() + } } binding.refreshLayout.setOnLoadMoreListener { - getSamplingList() + if (binding.dishRadioGroup.checkedRadioButtonId == R.id.rbSamplingFinished) { + getSamplingList() + } else { + finishRefresh() + } } binding.rbSamplingCooking.setOnClickListener { @@ -313,7 +318,17 @@ class SamplingModeActivity : BaseActivity() { } emptyViewBinding!!.tvContent.text = "暂无数据" emptyViewBinding!!.tvSubContent.text = "今日暂无采样数据,点击下方按钮新增采样" - dishAdapter.stateView = emptyViewBinding!!.root + + // 方案B:沿用 adapter stateView,使用 FrameLayout.LayoutParams + minimumHeight 避免空态贴顶 + emptyViewBinding!!.root.layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT + ) + binding.rvSamplingList.post { + emptyViewBinding!!.root.minimumHeight = binding.rvSamplingList.height + dishAdapter.stateView = emptyViewBinding!!.root + finishRefresh() + } //dishAdapter.setStateViewLayout(requireContext(), R.layout-sw800dp.layout_empty_view) binding.refreshLayout.run { diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt index 89c58a2..fa89c14 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt @@ -5,6 +5,7 @@ import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import android.widget.FrameLayout import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle @@ -247,7 +248,14 @@ class DishListFragment : BaseFragment() { } emptyViewBinding!!.tvContent.text = "暂无数据" emptyViewBinding!!.tvSubContent.text = "获取菜品数据失败,请检查网络设置或稍后重试" - dishAdapter.stateView = emptyViewBinding!!.root + emptyViewBinding!!.root.layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT + ) + binding.rvDishList.post { + emptyViewBinding!!.root.minimumHeight = binding.rvDishList.height + dishAdapter.stateView = emptyViewBinding!!.root + } } catch (e: Exception) { e.printStackTrace() }