From 96eb57d28cbc12b12cae3bc9be22fd3d9a4da888 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Mon, 13 Oct 2025 13:16:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=97=E5=85=B8=E6=98=BE=E7=A4=BA=E9=94=99?= =?UTF-8?q?=E4=BD=8D=20#86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legato/kazusa/ui/dict/DictDialog.kt | 65 ++++++++++++++----- app/src/main/res/layout/dialog_dict.xml | 20 ++++-- 2 files changed, 62 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/io/legato/kazusa/ui/dict/DictDialog.kt b/app/src/main/java/io/legato/kazusa/ui/dict/DictDialog.kt index 46182e5f5..ac2e6154f 100644 --- a/app/src/main/java/io/legato/kazusa/ui/dict/DictDialog.kt +++ b/app/src/main/java/io/legato/kazusa/ui/dict/DictDialog.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.text.method.LinkMovementMethod import android.view.View import androidx.fragment.app.viewModels +import androidx.transition.TransitionManager import com.google.android.material.tabs.TabLayout import io.legato.kazusa.R import io.legato.kazusa.base.BaseBottomSheetDialogFragment @@ -40,36 +41,60 @@ class DictDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_dict) { return } + setupTabs() + observeDicts() + } + + private fun setupTabs() { binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { - override fun onTabReselected(tab: TabLayout.Tab) { - - } - - override fun onTabUnselected(tab: TabLayout.Tab) { - - } + override fun onTabReselected(tab: TabLayout.Tab) = Unit + override fun onTabUnselected(tab: TabLayout.Tab) = Unit override fun onTabSelected(tab: TabLayout.Tab) { val dictRule = tab.tag as DictRule - binding.rotateLoading.visible() - viewModel.dict(dictRule, word!!) { - binding.rotateLoading.gone() - binding.tvDict.setHtml(it) - } + loadDict(dictRule) } }) - viewModel.initData { - it.forEach { + } + + private fun observeDicts() { + viewModel.initData { dictRules -> + if (dictRules.isEmpty()) { + showEmptyView("暂无可用词典") + return@initData + } + + binding.emptyMessageView.gone() + dictRules.forEach { binding.tabLayout.addTab(binding.tabLayout.newTab().apply { text = it.name tag = it }) } - setupTabLayoutMode(it.size) + setupTabLayoutMode(dictRules.size) + + + binding.tabLayout.getTabAt(0)?.select() + } + } + + private fun loadDict(dictRule: DictRule) { + + binding.tvDict.gone() + binding.emptyMessageView.gone() + binding.rotateLoading.visible() + + viewModel.dict(dictRule, word!!) { result -> + binding.rotateLoading.gone() + if (result.isBlank()) { + showEmptyView("没有查询到结果") + } else { + binding.tvDict.visible() + binding.tvDict.setHtml(result) + } } } - //根据已启用词典数动态选取布局 private fun setupTabLayoutMode(dictCount: Int) { if (dictCount <= 4) { binding.tabLayout.tabMode = TabLayout.MODE_FIXED @@ -80,4 +105,10 @@ class DictDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_dict) { } } -} \ No newline at end of file + private fun showEmptyView(message: String) { + binding.tvDict.gone() + binding.rotateLoading.gone() + binding.emptyMessageView.visible() + binding.emptyMessageView.setMessage(message) + } +} diff --git a/app/src/main/res/layout/dialog_dict.xml b/app/src/main/res/layout/dialog_dict.xml index 5693012ab..0c085cdb4 100644 --- a/app/src/main/res/layout/dialog_dict.xml +++ b/app/src/main/res/layout/dialog_dict.xml @@ -1,14 +1,15 @@ - - + android:layout_height="wrap_content" /> - + + +