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" />
-
+
+
+