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 @@