This commit is contained in:
Horis
2024-09-02 19:35:22 +08:00
parent e866cc95d9
commit ffaf2ff33d
6 changed files with 67 additions and 5 deletions

View File

@@ -6,6 +6,8 @@ import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.BookType
@@ -29,6 +31,7 @@ import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding
import splitties.init.appCtx
import splitties.views.bottomPadding
import java.io.FileOutputStream
class BookInfoEditActivity :
@@ -51,6 +54,7 @@ class BookInfoEditActivity :
viewModel.loadBook(it)
}
}
initView()
initEvent()
}
@@ -66,6 +70,15 @@ class BookInfoEditActivity :
return super.onCompatOptionsItemSelected(item)
}
private fun initView() {
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
windowInsets
}
}
private fun initEvent() = binding.run {
tvChangeCover.setOnClickListener {
viewModel.bookData.value?.let {

View File

@@ -7,6 +7,8 @@ import android.view.Menu
import android.view.MenuItem
import android.widget.EditText
import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.tabs.TabLayout
@@ -53,6 +55,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import splitties.views.bottomPadding
class BookSourceEditActivity :
VMBaseActivity<ActivityBookSourceEditBinding, BookSourceEditViewModel>(),
@@ -197,6 +200,13 @@ class BookSourceEditActivity :
setEditEntities(tab?.position)
}
})
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
softKeyboardTool.initialPadding = insets.bottom
windowInsets
}
}
override fun finish() {

View File

@@ -7,6 +7,8 @@ import android.view.Menu
import android.view.MenuItem
import android.widget.EditText
import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
@@ -18,6 +20,7 @@ import io.legado.app.utils.GSON
import io.legado.app.utils.sendToClip
import io.legado.app.utils.showHelp
import io.legado.app.utils.viewbindingdelegate.viewBinding
import splitties.views.bottomPadding
/**
* 编辑替换规则
@@ -54,12 +57,10 @@ class ReplaceEditActivity :
override fun onActivityCreated(savedInstanceState: Bundle?) {
softKeyboardTool.attachToWindow(window)
initView()
viewModel.initData(intent) {
upReplaceView(it)
}
binding.ivHelp.setOnClickListener {
showHelp("regexHelp")
}
}
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
@@ -73,6 +74,7 @@ class ReplaceEditActivity :
setResult(RESULT_OK)
finish()
}
R.id.menu_copy_rule -> sendToClip(GSON.toJson(getReplaceRule()))
R.id.menu_paste_rule -> viewModel.pasteRule {
upReplaceView(it)
@@ -86,6 +88,19 @@ class ReplaceEditActivity :
softKeyboardTool.dismiss()
}
private fun initView() {
binding.ivHelp.setOnClickListener {
showHelp("regexHelp")
}
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
softKeyboardTool.initialPadding = insets.bottom
windowInsets
}
}
private fun upReplaceView(replaceRule: ReplaceRule) = binding.run {
etName.setText(replaceRule.name)
etGroup.setText(replaceRule.group)

View File

@@ -21,6 +21,8 @@ import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.activity.addCallback
import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.size
import androidx.lifecycle.lifecycleScope
import com.script.rhino.RhinoScriptEngine
@@ -60,6 +62,7 @@ import io.legado.app.utils.visible
import kotlinx.coroutines.launch
import org.apache.commons.text.StringEscapeUtils
import org.jsoup.Jsoup
import splitties.views.bottomPadding
import java.io.ByteArrayInputStream
import java.net.URLDecoder
import java.util.regex.PatternSyntaxException
@@ -91,6 +94,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
viewModel.upStarMenuData.observe(this) { upStarMenu() }
viewModel.upTtsMenuData.observe(this) { upTtsMenu(it) }
binding.titleBar.title = intent.getStringExtra("title")
initView()
initWebView()
initLiveData()
viewModel.initData(intent)
@@ -175,6 +179,15 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
return AppConfig.isNightTheme
}
private fun initView() {
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
windowInsets
}
}
@SuppressLint("SetJavaScriptEnabled")
private fun initWebView() {
binding.progressBar.fontColor = accentColor

View File

@@ -6,6 +6,8 @@ import android.view.Menu
import android.view.MenuItem
import android.widget.EditText
import androidx.activity.viewModels
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.google.android.material.tabs.TabLayout
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
@@ -42,6 +44,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import splitties.views.bottomPadding
class RssSourceEditActivity :
VMBaseActivity<ActivityRssSourceEditBinding, RssSourceEditViewModel>(),
@@ -185,6 +188,13 @@ class RssSourceEditActivity :
setEditEntities(tab?.position)
}
})
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime()
val insets = windowInsets.getInsets(typeMask)
binding.root.bottomPadding = insets.bottom
softKeyboardTool.initialPadding = insets.bottom
windowInsets
}
}
private fun setEditEntities(tabPosition: Int?) {

View File

@@ -47,6 +47,7 @@ class KeyboardToolPop(
private val binding = PopupKeyboardToolBinding.inflate(LayoutInflater.from(context))
private val adapter = Adapter(context)
private var mIsSoftKeyBoardShowing = false
var initialPadding = 0
init {
contentView = binding.root
@@ -76,13 +77,13 @@ class KeyboardToolPop(
val preShowing = mIsSoftKeyBoardShowing
if (abs(keyboardHeight) > screenHeight / 5) {
mIsSoftKeyBoardShowing = true // 超过屏幕五分之一则表示弹出了输入法
rootView.setPadding(0, 0, 0, contentView.measuredHeight)
rootView.setPadding(0, 0, 0, initialPadding + contentView.measuredHeight)
if (!isShowing) {
showAtLocation(rootView, Gravity.BOTTOM, 0, 0)
}
} else {
mIsSoftKeyBoardShowing = false
rootView.setPadding(0, 0, 0, 0)
//rootView.setPadding(0, 0, 0, 0)
if (preShowing) {
dismiss()
}