diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d8d3dac..a8ba7b0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -45,7 +45,7 @@ dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.recyclerview:recyclerview:1.3.0") - implementation("androidx.activity:activity-ktx:1.7.0") + implementation("androidx.activity:activity-ktx:1.10.1") implementation("androidx.fragment:fragment-ktx:1.5.6") implementation("androidx.browser:browser:1.5.0") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ConfigEditActivity.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ConfigEditActivity.kt index faec56e..a8f3ab2 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ConfigEditActivity.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ConfigEditActivity.kt @@ -5,8 +5,12 @@ import android.content.DialogInterface import android.os.Bundle import android.view.Menu import android.view.MenuItem +import android.view.ViewGroup.MarginLayoutParams +import android.widget.LinearLayout import androidx.appcompat.app.AlertDialog import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams import androidx.core.widget.addTextChangedListener import com.blacksquircle.ui.editorkit.insert import com.blacksquircle.ui.language.json.JsonLanguage @@ -17,7 +21,9 @@ import io.nekohasekai.sagernet.Key import io.nekohasekai.sagernet.R import io.nekohasekai.sagernet.database.DataStore import io.nekohasekai.sagernet.databinding.LayoutEditConfigBinding -import io.nekohasekai.sagernet.ktx.* +import io.nekohasekai.sagernet.ktx.getColorAttr +import io.nekohasekai.sagernet.ktx.readableMessage +import io.nekohasekai.sagernet.ktx.toStringPretty import io.nekohasekai.sagernet.ui.ThemedActivity import io.nekohasekai.sagernet.widget.ListListener import moe.matsuri.nb4a.ui.ExtendedKeyboard @@ -100,6 +106,23 @@ class ConfigEditActivity : ThemedActivity() { extendedKeyboard.submitList("{},:_\"".map { it.toString() }) extendedKeyboard.setBackgroundColor(getColorAttr(R.attr.primaryOrTextPrimary)) + val keyboardContainer = findViewById(R.id.keyboard_container) + ViewCompat.setOnApplyWindowInsetsListener(keyboardContainer) { v, windowInsets -> + val imeInsets = windowInsets.getInsets(WindowInsetsCompat.Type.ime()) + val systemBarInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + val imeVisible = windowInsets.isVisible(WindowInsetsCompat.Type.ime()) + v.updateLayoutParams { + // systemBar insets are applied to the bottom of the keyboard + if (imeVisible) { + bottomMargin = imeInsets.bottom - systemBarInsets.bottom + } else { + bottomMargin = 0 + } + } + + WindowInsetsCompat.CONSUMED + } + ViewCompat.setOnApplyWindowInsetsListener(binding.root, ListListener) }