Skip to content

Commit 65ef804

Browse files
committed
Update
1 parent a963289 commit 65ef804

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

app/src/main/java/com/tool/tree/TextEditorActivity.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import android.widget.Toast
1111
import androidx.activity.addCallback
1212
import androidx.appcompat.app.AppCompatActivity
1313
import androidx.appcompat.widget.Toolbar
14+
import androidx.core.view.ViewCompat
15+
import androidx.core.view.WindowInsetsCompat
1416
import androidx.lifecycle.lifecycleScope
1517
import com.omarea.common.shared.FileWrite
1618
import com.omarea.common.shell.KeepShellPublic
@@ -82,6 +84,7 @@ class TextEditorActivity : AppCompatActivity() {
8284
ThemeModeState.switchTheme(this)
8385
binding = ActivityTextEditorBinding.inflate(layoutInflater)
8486
setContentView(binding.root)
87+
setupKeyboardInsets()
8588

8689
val toolbar = findViewById<View>(R.id.toolbar) as Toolbar
8790
setSupportActionBar(toolbar)
@@ -111,6 +114,30 @@ class TextEditorActivity : AppCompatActivity() {
111114
loadFileContent()
112115
}
113116

117+
/**
118+
* App đang dùng chế độ edge-to-edge (decorFitsSystemWindows = false) nên hệ thống sẽ
119+
* không tự đẩy layout lên khi hiện bàn phím dù có khai báo windowSoftInputMode="adjustResize"
120+
* trong manifest — phải tự lắng nghe inset của bàn phím (IME) rồi đệm (padding) đáy vùng
121+
* nội dung lên tương ứng, đồng thời ẩn FAB đi để không bị bàn phím che mất/đè lên.
122+
*/
123+
private fun setupKeyboardInsets() {
124+
val scrollContainer = binding.mainList
125+
ViewCompat.setOnApplyWindowInsetsListener(scrollContainer) { view, insets ->
126+
val imeInset = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom
127+
val systemBarsInset = insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom
128+
val keyboardVisible = imeInset > systemBarsInset
129+
130+
view.setPadding(view.paddingLeft, view.paddingTop, view.paddingRight, maxOf(imeInset, systemBarsInset))
131+
binding.editorFabRun.visibility = if (keyboardVisible) View.GONE else View.VISIBLE
132+
133+
if (keyboardVisible) {
134+
view.post { scrollContainer.fullScroll(View.FOCUS_DOWN) }
135+
}
136+
137+
insets
138+
}
139+
}
140+
114141
private fun resolveAbsolutePath(dir: String, file: String): String {
115142
if (file.startsWith("/")) return file
116143
val base = dir.ifEmpty { FileWrite.getPrivateFileDir(applicationContext) }

0 commit comments

Comments
 (0)