优化
This commit is contained in:
@@ -396,10 +396,6 @@ data class Book(
|
||||
}
|
||||
}
|
||||
|
||||
fun update() {
|
||||
appDb.bookDao.update(this)
|
||||
}
|
||||
|
||||
fun delete() {
|
||||
if (ReadBook.book?.bookUrl == bookUrl) {
|
||||
ReadBook.book = null
|
||||
|
||||
@@ -252,6 +252,10 @@ fun Book.sync(oldBook: Book) {
|
||||
canUpdate = curBook.canUpdate
|
||||
}
|
||||
|
||||
fun Book.update() {
|
||||
appDb.bookDao.update(this)
|
||||
}
|
||||
|
||||
fun Book.getBookSource(): BookSource? {
|
||||
return appDb.bookSourceDao.getBookSource(origin)
|
||||
}
|
||||
|
||||
@@ -1,16 +1,29 @@
|
||||
package io.legado.app.lib.prefs.fragment
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.preference.*
|
||||
import androidx.preference.EditTextPreference
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.MultiSelectListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import io.legado.app.lib.prefs.EditTextPreferenceDialog
|
||||
import io.legado.app.lib.prefs.ListPreferenceDialog
|
||||
import io.legado.app.lib.prefs.MultiSelectListPreferenceDialog
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
|
||||
abstract class PreferenceFragment : PreferenceFragmentCompat() {
|
||||
|
||||
private val dialogFragmentTag = "androidx.preference.PreferenceFragment.DIALOG"
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
listView.clipToPadding = false
|
||||
listView.applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
@SuppressLint("RestrictedApi")
|
||||
override fun onDisplayPreferenceDialog(preference: Preference) {
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.graphics.drawable.ColorDrawable
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.ViewCompat
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||
import io.legado.app.databinding.ViewNavigationBadgeBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
@@ -34,6 +35,8 @@ class ThemeBottomNavigationVIew(context: Context, attrs: AttributeSet) :
|
||||
isItemHorizontalTranslationEnabled = false
|
||||
itemBackground = ColorDrawable(Color.TRANSPARENT)
|
||||
}
|
||||
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this, null)
|
||||
}
|
||||
|
||||
fun addBadgeView(index: Int): BadgeView {
|
||||
|
||||
@@ -16,6 +16,7 @@ import io.legado.app.help.book.ContentProcessor
|
||||
import io.legado.app.help.book.getBookSource
|
||||
import io.legado.app.help.book.readSimulating
|
||||
import io.legado.app.help.book.simulatedTotalChapterNum
|
||||
import io.legado.app.help.book.update
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.model.webBook.WebBook
|
||||
import io.legado.app.service.AudioPlayService
|
||||
|
||||
@@ -16,6 +16,7 @@ import io.legado.app.help.book.isImage
|
||||
import io.legado.app.help.book.isLocal
|
||||
import io.legado.app.help.book.readSimulating
|
||||
import io.legado.app.help.book.simulatedTotalChapterNum
|
||||
import io.legado.app.help.book.update
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
|
||||
@@ -6,6 +6,7 @@ import io.legado.app.constant.AppPattern.bookFileRegex
|
||||
import io.legado.app.constant.BookType
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.help.book.update
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.webdav.Authorization
|
||||
import io.legado.app.lib.webdav.WebDav
|
||||
|
||||
@@ -11,6 +11,7 @@ import io.legado.app.constant.EventBus
|
||||
import io.legado.app.constant.IntentAction
|
||||
import io.legado.app.constant.NotificationId
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.help.book.update
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.model.CacheBook
|
||||
import io.legado.app.model.webBook.WebBook
|
||||
|
||||
@@ -21,6 +21,7 @@ import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
import io.legado.app.ui.book.search.SearchActivity
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.cnCompare
|
||||
import io.legado.app.utils.getInt
|
||||
@@ -105,6 +106,7 @@ class ReadRecordActivity : BaseActivity<ActivityReadRecordBinding>() {
|
||||
}
|
||||
}
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
private fun initSearchView() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.databinding.ActivityAllBookmarkBinding
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
@@ -53,6 +54,7 @@ class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookma
|
||||
private fun initView() {
|
||||
binding.recyclerView.addItemDecoration(BookmarkDecoration(adapter))
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||
|
||||
@@ -37,6 +37,7 @@ import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.utils.ACache
|
||||
import io.legado.app.utils.FileDoc
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.checkWrite
|
||||
import io.legado.app.utils.cnCompare
|
||||
@@ -200,6 +201,7 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.layoutManager = layoutManager
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
private fun initBookData() {
|
||||
|
||||
@@ -13,6 +13,7 @@ import io.legado.app.databinding.ViewLoadMoreBinding
|
||||
import io.legado.app.ui.book.info.BookInfoActivity
|
||||
import io.legado.app.ui.widget.recycler.LoadMoreView
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.startActivity
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
@@ -43,6 +44,7 @@ class ExploreShowActivity : VMBaseActivity<ActivityExploreShowBinding, ExploreSh
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.addItemDecoration(VerticalDivider(this))
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
adapter.addFooterView {
|
||||
ViewLoadMoreBinding.bind(loadMoreView)
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ import io.legado.app.help.book.isLocal
|
||||
import io.legado.app.help.book.isLocalTxt
|
||||
import io.legado.app.help.book.isMobi
|
||||
import io.legado.app.help.book.removeType
|
||||
import io.legado.app.help.book.update
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.help.config.ReadTipConfig
|
||||
|
||||
@@ -34,6 +34,8 @@ import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.ui.book.info.BookInfoActivity
|
||||
import io.legado.app.ui.book.source.manage.BookSourceActivity
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import io.legado.app.utils.applyNavigationBarMargin
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.getPrefBoolean
|
||||
import io.legado.app.utils.gone
|
||||
@@ -211,11 +213,14 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
|
||||
binding.rvHistoryKey.setEdgeEffectColor(primaryColor)
|
||||
binding.rvBookshelfSearch.layoutManager = FlexboxLayoutManager(this)
|
||||
binding.rvBookshelfSearch.adapter = bookAdapter
|
||||
binding.rvBookshelfSearch.applyNavigationBarMargin()
|
||||
binding.rvHistoryKey.layoutManager = FlexboxLayoutManager(this)
|
||||
binding.rvHistoryKey.adapter = historyKeyAdapter
|
||||
binding.rvHistoryKey.applyNavigationBarMargin()
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(this)
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.itemAnimator = null
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
|
||||
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
|
||||
super.onItemRangeInserted(positionStart, itemCount)
|
||||
|
||||
@@ -28,6 +28,7 @@ import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import io.legado.app.utils.applyNavigationBarMargin
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.hideSoftInput
|
||||
import io.legado.app.utils.invisible
|
||||
@@ -65,6 +66,7 @@ class SearchContentActivity :
|
||||
val bbg = bottomBackground
|
||||
val btc = getPrimaryTextColor(ColorUtils.isColorLight(bbg))
|
||||
binding.llSearchBaseInfo.setBackgroundColor(bbg)
|
||||
binding.llSearchBaseInfo.applyNavigationBarMargin()
|
||||
binding.tvCurrentSearchInfo.setTextColor(btc)
|
||||
binding.ivSearchContentTop.setColorFilter(btc)
|
||||
binding.ivSearchContentBottom.setColorFilter(btc)
|
||||
|
||||
@@ -17,6 +17,7 @@ import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.qrcode.QrCodeResult
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.launch
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
@@ -61,6 +62,7 @@ class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookS
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
binding.rotateLoading.loadingColor = accentColor
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.book.bookmark.BookmarkDialog
|
||||
import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -50,6 +51,7 @@ class BookmarkFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_bookmark
|
||||
binding.recyclerView.layoutManager = mLayoutManager
|
||||
binding.recyclerView.addItemDecoration(VerticalDivider(requireContext()))
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
override fun upBookmark(searchKey: String?) {
|
||||
|
||||
@@ -23,6 +23,7 @@ import io.legado.app.lib.theme.getPrimaryTextColor
|
||||
import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import io.legado.app.utils.applyNavigationBarMargin
|
||||
import io.legado.app.utils.observeEvent
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@@ -74,6 +75,7 @@ class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapt
|
||||
tvCurrentChapterInfo.setOnClickListener {
|
||||
mLayoutManager.scrollToPositionWithOffset(durChapterIndex, 0)
|
||||
}
|
||||
binding.llChapterBaseInfo.applyNavigationBarMargin()
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
|
||||
@@ -23,6 +23,7 @@ import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.file.utils.FilePickerIcon
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.ConvertUtils
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.openFileUri
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -56,6 +57,7 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(this)
|
||||
binding.recyclerView.addItemDecoration(VerticalDivider(this))
|
||||
binding.recyclerView.adapter = fileAdapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
if (viewModel.lastDir != viewModel.rootDoc) {
|
||||
gotoLastDir()
|
||||
|
||||
@@ -10,6 +10,7 @@ import android.view.ViewGroup
|
||||
import android.widget.EditText
|
||||
import androidx.activity.addCallback
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.postDelayed
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
@@ -45,6 +46,7 @@ import io.legado.app.ui.main.rss.RssFragment
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.hideSoftInput
|
||||
import io.legado.app.utils.isCreated
|
||||
import io.legado.app.utils.navigationBarHeight
|
||||
import io.legado.app.utils.observeEvent
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
@@ -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
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
@@ -87,18 +90,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
upBottomMenu()
|
||||
binding.run {
|
||||
viewPagerMain.setEdgeEffectColor(primaryColor)
|
||||
viewPagerMain.offscreenPageLimit = 3
|
||||
viewPagerMain.adapter = adapter
|
||||
viewPagerMain.addOnPageChangeListener(PageChangeCallback())
|
||||
bottomNavigationView.elevation = elevation
|
||||
bottomNavigationView.setOnNavigationItemSelectedListener(this@MainActivity)
|
||||
bottomNavigationView.setOnNavigationItemReselectedListener(this@MainActivity)
|
||||
if (AppConfig.isEInkMode) {
|
||||
bottomNavigationView.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
}
|
||||
}
|
||||
initView()
|
||||
upHomePage()
|
||||
viewModel.deleteNotShelfBook()
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
@@ -198,6 +190,24 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
}
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
viewPagerMain.setEdgeEffectColor(primaryColor)
|
||||
viewPagerMain.offscreenPageLimit = 3
|
||||
viewPagerMain.adapter = adapter
|
||||
viewPagerMain.addOnPageChangeListener(PageChangeCallback())
|
||||
bottomNavigationView.elevation = elevation
|
||||
bottomNavigationView.setOnNavigationItemSelectedListener(this@MainActivity)
|
||||
bottomNavigationView.setOnNavigationItemReselectedListener(this@MainActivity)
|
||||
if (AppConfig.isEInkMode) {
|
||||
bottomNavigationView.setBackgroundResource(R.drawable.bg_eink_border_top)
|
||||
}
|
||||
ViewCompat.setOnApplyWindowInsetsListener(root) { _, windowInsets ->
|
||||
val height = windowInsets.navigationBarHeight
|
||||
bottomNavigationView.bottomPadding = height
|
||||
windowInsets.inset(0, 0, 0, height)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户隐私与协议
|
||||
*/
|
||||
|
||||
@@ -21,6 +21,7 @@ import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.rss.read.ReadRssActivity
|
||||
import io.legado.app.ui.widget.recycler.LoadMoreView
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.startActivity
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -66,6 +67,7 @@ class RssArticlesFragment() : VMBaseFragment<RssArticlesViewModel>(R.layout.frag
|
||||
private fun initView() = binding.run {
|
||||
refreshLayout.setColorSchemeColors(accentColor)
|
||||
recyclerView.setEdgeEffectColor(primaryColor)
|
||||
recyclerView.applyNavigationBarPadding()
|
||||
loadMoreView.setOnClickListener {
|
||||
if (!loadMoreView.isLoading) {
|
||||
scrollToBottom(true)
|
||||
|
||||
@@ -15,6 +15,7 @@ import io.legado.app.databinding.FragmentRssArticlesBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.rss.read.ReadRssActivity
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.startActivity
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -51,6 +52,7 @@ class RssFavoritesFragment() : VMBaseFragment<RssFavoritesViewModel>(R.layout.fr
|
||||
LinearLayoutManager(requireContext())
|
||||
}
|
||||
recyclerView.adapter = adapter
|
||||
recyclerView.applyNavigationBarPadding()
|
||||
}
|
||||
|
||||
private fun loadArticles() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import io.legado.app.databinding.ActivitySourceDebugBinding
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.gone
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
@@ -59,6 +60,7 @@ class RssSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, RssSou
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
binding.rotateLoading.loadingColor = accentColor
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import io.legado.app.ui.association.ImportBookSourceDialog
|
||||
import io.legado.app.ui.association.ImportReplaceRuleDialog
|
||||
import io.legado.app.ui.association.ImportRssSourceDialog
|
||||
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
||||
import io.legado.app.utils.applyNavigationBarPadding
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
@@ -59,6 +60,7 @@ class RuleSubActivity : BaseActivity<ActivityRuleSubBinding>(),
|
||||
|
||||
private fun initView() {
|
||||
binding.recyclerView.adapter = adapter
|
||||
binding.recyclerView.applyNavigationBarPadding()
|
||||
val itemTouchCallback = ItemTouchCallback(adapter)
|
||||
itemTouchCallback.isCanDrag = true
|
||||
ItemTouchHelper(itemTouchCallback).attachToRecyclerView(binding.recyclerView)
|
||||
|
||||
@@ -16,6 +16,7 @@ import android.view.View.GONE
|
||||
import android.view.View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS
|
||||
import android.view.View.INVISIBLE
|
||||
import android.view.View.VISIBLE
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.EdgeEffect
|
||||
import android.widget.EditText
|
||||
@@ -32,6 +33,7 @@ import androidx.core.graphics.withTranslation
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.get
|
||||
import androidx.core.view.marginBottom
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import io.legado.app.help.config.AppConfig
|
||||
@@ -273,8 +275,17 @@ fun View.applyStatusBarPadding(withInitialPadding: Boolean = false) {
|
||||
fun View.applyNavigationBarPadding(withInitialPadding: Boolean = false) {
|
||||
val initialPadding = if (withInitialPadding) bottomPadding else 0
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this) { _, windowInsets ->
|
||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
bottomPadding = initialPadding + insets.bottom
|
||||
bottomPadding = initialPadding + windowInsets.navigationBarHeight
|
||||
windowInsets
|
||||
}
|
||||
}
|
||||
|
||||
fun View.applyNavigationBarMargin(withInitialMargin: Boolean = false) {
|
||||
val initialMargin = if (withInitialMargin) marginBottom else 0
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this) { _, windowInsets ->
|
||||
val lp = layoutParams as ViewGroup.MarginLayoutParams
|
||||
lp.bottomMargin = initialMargin + windowInsets.navigationBarHeight
|
||||
layoutParams = lp
|
||||
windowInsets
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package io.legado.app.utils
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
|
||||
val WindowInsetsCompat.navigationBarHeight
|
||||
get() = getInsets(WindowInsetsCompat.Type.systemBars()).bottom
|
||||
get() = (getInsets(WindowInsetsCompat.Type.systemBars()).bottom - imeHeight).coerceAtLeast(0)
|
||||
|
||||
val WindowInsetsCompat.imeHeight
|
||||
get() = getInsets(WindowInsetsCompat.Type.ime()).bottom
|
||||
|
||||
Reference in New Issue
Block a user