mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
自动隐藏键盘
This commit is contained in:
@@ -110,6 +110,13 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
|
||||
}
|
||||
}
|
||||
|
||||
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
|
||||
if (ev.action == MotionEvent.ACTION_DOWN) {
|
||||
binding.root.hideSoftInput()
|
||||
}
|
||||
return super.dispatchTouchEvent(ev)
|
||||
}
|
||||
|
||||
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.book_source, menu)
|
||||
return super.onCompatCreateOptionsMenu(menu)
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.os.Bundle
|
||||
import android.text.format.DateUtils
|
||||
import android.view.KeyEvent
|
||||
import android.view.MenuItem
|
||||
import android.view.MotionEvent
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.postDelayed
|
||||
@@ -38,10 +39,7 @@ import io.legado.app.ui.main.explore.ExploreFragment
|
||||
import io.legado.app.ui.main.my.MyFragment
|
||||
import io.legado.app.ui.main.rss.RssFragment
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.observeEvent
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -85,6 +83,13 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
}
|
||||
}
|
||||
|
||||
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
|
||||
if (ev.action == MotionEvent.ACTION_DOWN) {
|
||||
binding.root.hideSoftInput()
|
||||
}
|
||||
return super.dispatchTouchEvent(ev)
|
||||
}
|
||||
|
||||
override fun onPostCreate(savedInstanceState: Bundle?) {
|
||||
super.onPostCreate(savedInstanceState)
|
||||
launch {
|
||||
|
||||
@@ -23,7 +23,10 @@ import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.book.explore.ExploreShowActivity
|
||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.cnCompare
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.startActivity
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Job
|
||||
@@ -48,7 +51,6 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_explo
|
||||
private val groups = linkedSetOf<String>()
|
||||
private var exploreFlowJob: Job? = null
|
||||
private var groupsMenu: SubMenu? = null
|
||||
private val softKeyBoardChangeListener = SoftKeyBoardChangeListener()
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
setSupportToolbar(binding.titleBar.toolbar)
|
||||
@@ -56,14 +58,6 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_explo
|
||||
initRecyclerView()
|
||||
initGroupData()
|
||||
upExploreData()
|
||||
softKeyBoardChangeListener.attach(requireActivity().window) {
|
||||
binding.root.setPaddingBottom(softKeyBoardChangeListener.keyBoardHeight)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
softKeyBoardChangeListener.unAttach()
|
||||
}
|
||||
|
||||
override fun onCompatCreateOptionsMenu(menu: Menu) {
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package io.legado.app.utils
|
||||
|
||||
import android.graphics.Rect
|
||||
import android.view.ViewTreeObserver
|
||||
import android.view.Window
|
||||
import splitties.systemservices.windowManager
|
||||
import kotlin.math.abs
|
||||
|
||||
class SoftKeyBoardChangeListener : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
|
||||
private var window: Window? = null
|
||||
private var softKeyBoardChangeCallback: ((Boolean) -> Unit)? = null
|
||||
var keyBoardShowing = false
|
||||
private set
|
||||
var keyBoardHeight = 0
|
||||
|
||||
fun attach(window: Window, callback: ((Boolean) -> Unit)) {
|
||||
this.window = window
|
||||
window.decorView.viewTreeObserver.addOnGlobalLayoutListener(this)
|
||||
softKeyBoardChangeCallback = callback
|
||||
}
|
||||
|
||||
fun unAttach() {
|
||||
window?.decorView?.viewTreeObserver?.removeOnGlobalLayoutListener(this)
|
||||
window = null
|
||||
}
|
||||
|
||||
override fun onGlobalLayout() {
|
||||
window?.let {
|
||||
val rect = Rect()
|
||||
// 获取当前页面窗口的显示范围
|
||||
it.decorView.getWindowVisibleDisplayFrame(rect)
|
||||
val screenHeight = windowManager.windowSize.heightPixels
|
||||
val keyboardHeight = screenHeight - rect.bottom // 输入法的高度
|
||||
if (abs(keyboardHeight) > screenHeight / 5) {
|
||||
keyBoardShowing = true // 超过屏幕五分之一则表示弹出了输入法
|
||||
this.keyBoardHeight = abs(keyboardHeight)
|
||||
softKeyBoardChangeCallback?.invoke(true)
|
||||
} else {
|
||||
keyBoardShowing = false
|
||||
this.keyBoardHeight = 0
|
||||
softKeyBoardChangeCallback?.invoke(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user