fix: 修复国际进港电报详情只读状态下无法滚动

只读态原本通过 EditText.enabled=false 表达,但会一并吞掉触摸滚动手势,
导致文字较多时无法上下查看。改用 focusable/focusableInTouchMode/
cursorVisible/keyListener 组合表达不可编辑,同时保持 enabled=true,
两种状态下文本均可滚动。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-14 20:24:36 +08:00
parent 76e613623a
commit c05608c5f1
2 changed files with 11 additions and 1 deletions

View File

@@ -25,6 +25,17 @@ class IntArrTelegramDetailsActivity : BaseBindingActivity<ActivityIntArrTelegram
override fun initOnCreate(savedInstanceState: Bundle?) { override fun initOnCreate(savedInstanceState: Bundle?) {
setBackArrow("国际进港电报详情") setBackArrow("国际进港电报详情")
binding.viewModel = viewModel binding.viewModel = viewModel
val originalKeyListener = binding.etContent.keyListener
viewModel.isEditable.observe(this) { editable ->
binding.etContent.apply {
isFocusable = editable
isFocusableInTouchMode = editable
isCursorVisible = editable
keyListener = if (editable) originalKeyListener else null
}
}
viewModel.initOnCreated(intent) viewModel.initOnCreated(intent)
} }

View File

@@ -29,7 +29,6 @@
android:padding="20dp" android:padding="20dp"
android:gravity="top|start" android:gravity="top|start"
android:text="@={viewModel.telegramContent}" android:text="@={viewModel.telegramContent}"
android:enabled="@{viewModel.isEditable}"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" android:textSize="16sp"
android:lineSpacingExtra="4dp" android:lineSpacingExtra="4dp"