From 9ed6a4e494acd4d7bc4598e1f36bba8a5523da92 Mon Sep 17 00:00:00 2001 From: YANGJIANKUAN Date: Mon, 23 Mar 2026 15:53:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20opt=20=E8=BF=9B=E6=B8=AF=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20filter=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lukouguoji/module_base/ktx/EditTextKtx.kt | 39 +++++++++++++++++++ .../gjj/activity/IntImpQueryActivity.kt | 7 ++++ .../layout/layout_int_imp_query_filter.xml | 2 + 3 files changed, 48 insertions(+) diff --git a/module_base/src/main/java/com/lukouguoji/module_base/ktx/EditTextKtx.kt b/module_base/src/main/java/com/lukouguoji/module_base/ktx/EditTextKtx.kt index bbb0173..e4f5a3c 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/ktx/EditTextKtx.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/ktx/EditTextKtx.kt @@ -56,4 +56,43 @@ class UpperCaseAlphanumericInputFilter : InputFilter { */ fun EditText.setUpperCaseAlphanumericFilter() { this.filters = arrayOf(UpperCaseAlphanumericInputFilter()) +} + +/** + * 大写字母输入过滤器 + * 只允许输入大写字母(A-Z),小写字母自动转为大写 + */ +class UpperCaseLetterInputFilter : InputFilter { + override fun filter( + source: CharSequence?, + start: Int, + end: Int, + dest: Spanned?, + dstart: Int, + dend: Int + ): CharSequence? { + if (source.isNullOrEmpty()) return null + + val filtered = StringBuilder() + for (i in start until end) { + val char = source[i] + if (char in 'A'..'Z' || char in 'a'..'z') { + filtered.append(char.uppercaseChar()) + } + } + + return if (filtered.toString() == source.subSequence(start, end).toString()) { + null + } else { + filtered.toString() + } + } +} + +/** + * 为 EditText 设置大写字母输入过滤器 + * 使用方式: editText.setUpperCaseLetterFilter() + */ +fun EditText.setUpperCaseLetterFilter() { + this.filters = arrayOf(UpperCaseLetterInputFilter()) } \ No newline at end of file diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryActivity.kt index 648579a..ecbc2bc 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpQueryActivity.kt @@ -16,6 +16,8 @@ import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.impl.observe import com.lukouguoji.module_base.ktx.addOnItemClickListener import com.lukouguoji.module_base.ktx.getLifecycleOwner +import com.lukouguoji.module_base.ktx.setUpperCaseAlphanumericFilter +import com.lukouguoji.module_base.ktx.setUpperCaseLetterFilter import com.lukouguoji.module_base.router.ARouterConstants /** @@ -53,6 +55,11 @@ class IntImpQueryActivity : if (visible) showFilterPanel() else hideFilterPanel() } + // 航班号:大写字母+数字 + binding.filterPanel.filterFlightNo.et.setUpperCaseAlphanumericFilter() + // 始发港:仅大写字母 + binding.filterPanel.filterOrigin.et.setUpperCaseLetterFilter() + viewModel.refresh() } diff --git a/module_gjj/src/main/res/layout/layout_int_imp_query_filter.xml b/module_gjj/src/main/res/layout/layout_int_imp_query_filter.xml index bd37a23..a1dafed 100644 --- a/module_gjj/src/main/res/layout/layout_int_imp_query_filter.xml +++ b/module_gjj/src/main/res/layout/layout_int_imp_query_filter.xml @@ -70,6 +70,7 @@