File tree Expand file tree Collapse file tree
app/src/main/java/com/tool/tree Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -165,11 +165,26 @@ class TextEditorActivity : AppCompatActivity() {
165165 private fun applyWrapState () {
166166 val editText = binding.editorContent
167167 val horizontalScroll: HorizontalScrollView = binding.editorScrollHorizontal
168+
169+ // Lưu lại vị trí con trỏ và nội dung hiện tại trước khi đổi chế độ
170+ val currentText = editText.text?.toString().orEmpty()
171+ val cursorStart = editText.selectionStart.coerceIn(0 , currentText.length)
172+ val cursorEnd = editText.selectionEnd.coerceIn(0 , currentText.length)
173+
168174 editText.setHorizontallyScrolling(! wrapEnabled)
175+
169176 val params = editText.layoutParams
170177 params.width = if (wrapEnabled) android.view.ViewGroup .LayoutParams .MATCH_PARENT else android.view.ViewGroup .LayoutParams .WRAP_CONTENT
171178 editText.layoutParams = params
179+
180+ // Chỉ đổi setHorizontallyScrolling()/layoutParams thôi thì TextView không tự dựng lại
181+ // Layout nội bộ theo chiều rộng mới (văn bản đã dàn trang trước đó bị giữ nguyên), nên
182+ // phải set lại text để buộc nó dựng lại layout rồi khôi phục vị trí con trỏ.
183+ editText.setText(currentText)
184+ editText.setSelection(cursorStart.coerceAtMost(currentText.length), cursorEnd.coerceAtMost(currentText.length))
185+
172186 horizontalScroll.isHorizontalScrollBarEnabled = ! wrapEnabled
187+ horizontalScroll.scrollTo(0 , 0 )
173188 }
174189
175190 private fun hasUnsavedChanges (): Boolean {
You can’t perform that action at this time.
0 commit comments