自动隐藏键盘
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 {
|
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
menuInflater.inflate(R.menu.book_source, menu)
|
menuInflater.inflate(R.menu.book_source, menu)
|
||||||
return super.onCompatCreateOptionsMenu(menu)
|
return super.onCompatCreateOptionsMenu(menu)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.os.Bundle
|
|||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
|
import android.view.MotionEvent
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.core.view.postDelayed
|
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.my.MyFragment
|
||||||
import io.legado.app.ui.main.rss.RssFragment
|
import io.legado.app.ui.main.rss.RssFragment
|
||||||
import io.legado.app.ui.widget.dialog.TextDialog
|
import io.legado.app.ui.widget.dialog.TextDialog
|
||||||
import io.legado.app.utils.observeEvent
|
import io.legado.app.utils.*
|
||||||
import io.legado.app.utils.setEdgeEffectColor
|
|
||||||
import io.legado.app.utils.showDialogFragment
|
|
||||||
import io.legado.app.utils.toastOnUi
|
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.launch
|
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?) {
|
override fun onPostCreate(savedInstanceState: Bundle?) {
|
||||||
super.onPostCreate(savedInstanceState)
|
super.onPostCreate(savedInstanceState)
|
||||||
launch {
|
launch {
|
||||||
|
|||||||
@@ -23,7 +23,10 @@ import io.legado.app.lib.theme.primaryColor
|
|||||||
import io.legado.app.lib.theme.primaryTextColor
|
import io.legado.app.lib.theme.primaryTextColor
|
||||||
import io.legado.app.ui.book.explore.ExploreShowActivity
|
import io.legado.app.ui.book.explore.ExploreShowActivity
|
||||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
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 io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
@@ -48,7 +51,6 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_explo
|
|||||||
private val groups = linkedSetOf<String>()
|
private val groups = linkedSetOf<String>()
|
||||||
private var exploreFlowJob: Job? = null
|
private var exploreFlowJob: Job? = null
|
||||||
private var groupsMenu: SubMenu? = null
|
private var groupsMenu: SubMenu? = null
|
||||||
private val softKeyBoardChangeListener = SoftKeyBoardChangeListener()
|
|
||||||
|
|
||||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
setSupportToolbar(binding.titleBar.toolbar)
|
setSupportToolbar(binding.titleBar.toolbar)
|
||||||
@@ -56,14 +58,6 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_explo
|
|||||||
initRecyclerView()
|
initRecyclerView()
|
||||||
initGroupData()
|
initGroupData()
|
||||||
upExploreData()
|
upExploreData()
|
||||||
softKeyBoardChangeListener.attach(requireActivity().window) {
|
|
||||||
binding.root.setPaddingBottom(softKeyBoardChangeListener.keyBoardHeight)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroy() {
|
|
||||||
super.onDestroy()
|
|
||||||
softKeyBoardChangeListener.unAttach()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCompatCreateOptionsMenu(menu: Menu) {
|
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