HapeLee 1 vuosi sitten
vanhempi
commit
96d2d65511
43 muutettua tiedostoa jossa 302 lisäystä ja 281 poistoa
  1. 17 17
      app/src/main/java/io/legado/app/base/BaseActivity.kt
  2. 21 21
      app/src/main/java/io/legado/app/lib/prefs/PreferenceCategory.kt
  3. 13 13
      app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt
  4. 2 1
      app/src/main/java/io/legado/app/ui/config/ThemeListDialog.kt
  5. 2 3
      app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt
  6. 3 10
      app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt
  7. 1 1
      app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt
  8. 2 4
      app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt
  9. 5 5
      app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt
  10. 2 2
      app/src/main/java/io/legado/app/ui/widget/SearchView.kt
  11. 17 14
      app/src/main/java/io/legado/app/ui/widget/recycler/scroller/FastScroller.kt
  12. 2 6
      app/src/main/res/drawable/bg_searchview.xml
  13. 1 1
      app/src/main/res/drawable/fastscroll_handle.xml
  14. 1 1
      app/src/main/res/drawable/fastscroll_track.xml
  15. 1 1
      app/src/main/res/drawable/ic_groups.xml
  16. 3 9
      app/src/main/res/drawable/ic_star_border.xml
  17. 1 1
      app/src/main/res/drawable/selector_fillet_btn_bg.xml
  18. 1 1
      app/src/main/res/drawable/shape_fillet_btn.xml
  19. 2 2
      app/src/main/res/layout/activity_book_info.xml
  20. 3 1
      app/src/main/res/layout/activity_book_search.xml
  21. 1 0
      app/src/main/res/layout/activity_book_source_edit.xml
  22. 8 16
      app/src/main/res/layout/activity_import_book.xml
  23. 14 15
      app/src/main/res/layout/dialog_bookshelf_config.xml
  24. 3 5
      app/src/main/res/layout/dialog_recycler_view.xml
  25. 4 5
      app/src/main/res/layout/dialog_toc_regex_edit.xml
  26. 2 5
      app/src/main/res/layout/fragment_bookshelf1.xml
  27. 47 20
      app/src/main/res/layout/fragment_explore.xml
  28. 25 7
      app/src/main/res/layout/fragment_my_config.xml
  29. 50 22
      app/src/main/res/layout/fragment_rss.xml
  30. 2 5
      app/src/main/res/layout/item_book_source.xml
  31. 4 5
      app/src/main/res/layout/item_dict_rule.xml
  32. 4 6
      app/src/main/res/layout/item_fillet_text.xml
  33. 2 6
      app/src/main/res/layout/item_find_book.xml
  34. 1 4
      app/src/main/res/layout/item_txt_toc_rule.xml
  35. 3 3
      app/src/main/res/layout/view_fastscroller.xml
  36. 1 4
      app/src/main/res/layout/view_preference.xml
  37. 1 12
      app/src/main/res/layout/view_preference_category.xml
  38. 16 17
      app/src/main/res/layout/view_search.xml
  39. 2 2
      app/src/main/res/menu/main_explore.xml
  40. 0 2
      app/src/main/res/menu/main_rss.xml
  41. 6 0
      app/src/main/res/values-night/styles.xml
  42. 4 4
      app/src/main/res/values/dimens.xml
  43. 2 2
      app/src/main/res/values/styles.xml

+ 17 - 17
app/src/main/java/io/legado/app/base/BaseActivity.kt

@@ -80,9 +80,9 @@ abstract class BaseActivity<VB : ViewBinding>(
     @SuppressLint("ObsoleteSdkInt")
     @SuppressLint("ObsoleteSdkInt")
     override fun onCreate(savedInstanceState: Bundle?) {
     override fun onCreate(savedInstanceState: Bundle?) {
         window.decorView.disableAutoFill()
         window.decorView.disableAutoFill()
-        initTheme()
+        //initTheme()
         super.onCreate(savedInstanceState)
         super.onCreate(savedInstanceState)
-        setupSystemBar()
+        //setupSystemBar()
         setContentView(binding.root)
         setContentView(binding.root)
         upBackgroundImage()
         upBackgroundImage()
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
@@ -101,14 +101,14 @@ abstract class BaseActivity<VB : ViewBinding>(
         super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig)
         super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig)
 //        findViewById<TitleBar>(R.id.title_bar)
 //        findViewById<TitleBar>(R.id.title_bar)
 //            ?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
 //            ?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
-        setupSystemBar()
+        //setupSystemBar()
     }
     }
 
 
     override fun onConfigurationChanged(newConfig: Configuration) {
     override fun onConfigurationChanged(newConfig: Configuration) {
         super.onConfigurationChanged(newConfig)
         super.onConfigurationChanged(newConfig)
         //findViewById<TitleBar>(R.id.title_bar)
         //findViewById<TitleBar>(R.id.title_bar)
             //?.onMultiWindowModeChanged(isInMultiWindow, fullScreen)
             //?.onMultiWindowModeChanged(isInMultiWindow, fullScreen)
-        setupSystemBar()
+        //setupSystemBar()
     }
     }
 
 
     abstract fun onActivityCreated(savedInstanceState: Bundle?)
     abstract fun onActivityCreated(savedInstanceState: Bundle?)
@@ -174,20 +174,20 @@ abstract class BaseActivity<VB : ViewBinding>(
         }
         }
     }
     }
 
 
-    open fun setupSystemBar() {
-        if (fullScreen && !isInMultiWindow) {
-            fullScreen()
-        }
-        //val isTransparentStatusBar = AppConfig.isTransparentStatusBar
-        //val statusBarColor = ThemeStore.statusBarColor(this, isTransparentStatusBar)
-        //setStatusBarColorAuto(statusBarColor, isTransparentStatusBar, fullScreen)
-//        if (toolBarTheme == Theme.Dark) {
-//            setLightStatusBar(false)
-//        } else if (toolBarTheme == Theme.Light) {
-//            setLightStatusBar(true)
+//    open fun setupSystemBar() {
+//        if (fullScreen && !isInMultiWindow) {
+//            fullScreen()
 //        }
 //        }
-        upNavigationBarColor()
-    }
+//        //val isTransparentStatusBar = AppConfig.isTransparentStatusBar
+//        //val statusBarColor = ThemeStore.statusBarColor(this, isTransparentStatusBar)
+//        //setStatusBarColorAuto(statusBarColor, isTransparentStatusBar, fullScreen)
+////        if (toolBarTheme == Theme.Dark) {
+////            setLightStatusBar(false)
+////        } else if (toolBarTheme == Theme.Light) {
+////            setLightStatusBar(true)
+////        }
+//        upNavigationBarColor()
+//    }
 
 
     open fun upNavigationBarColor() {
     open fun upNavigationBarColor() {
 //        if (AppConfig.immNavigationBar) {
 //        if (AppConfig.immNavigationBar) {

+ 21 - 21
app/src/main/java/io/legado/app/lib/prefs/PreferenceCategory.kt

@@ -31,27 +31,27 @@ class PreferenceCategory(context: Context, attrs: AttributeSet) :
             //view.setTextColor(context.accentColor)
             //view.setTextColor(context.accentColor)
             view.isVisible = !title.isNullOrEmpty()
             view.isVisible = !title.isNullOrEmpty()
 
 
-            val da = holder.findViewById(R.id.preference_divider_above)
-            val dividerColor = if (AppConfig.isNightTheme) {
-//                ColorUtils.withAlpha(
-//                    ColorUtils.shiftColor(context.backgroundColor, 1.05f),
-//                    0.5f
-//                )
-            } else {
-//                ColorUtils.withAlpha(
-//                    ColorUtils.shiftColor(context.backgroundColor, 0.95f),
-//                    0.5f
-//                )
-            }
-            if (da is View) {
-                //da.setBackgroundColor(dividerColor)
-                da.isVisible = holder.isDividerAllowedAbove
-            }
-            val db = holder.findViewById(R.id.preference_divider_below)
-            if (db is View) {
-                //db.setBackgroundColor(dividerColor)
-                db.isVisible = holder.isDividerAllowedBelow
-            }
+//            val da = holder.findViewById(R.id.preference_divider_above)
+//            val dividerColor = if (AppConfig.isNightTheme) {
+////                ColorUtils.withAlpha(
+////                    ColorUtils.shiftColor(context.backgroundColor, 1.05f),
+////                    0.5f
+////                )
+//            } else {
+////                ColorUtils.withAlpha(
+////                    ColorUtils.shiftColor(context.backgroundColor, 0.95f),
+////                    0.5f
+////                )
+//            }
+//            if (da is View) {
+//                //da.setBackgroundColor(dividerColor)
+//                da.isVisible = holder.isDividerAllowedAbove
+//            }
+//            val db = holder.findViewById(R.id.preference_divider_below)
+//            if (db is View) {
+//                //db.setBackgroundColor(dividerColor)
+//                db.isVisible = holder.isDividerAllowedBelow
+//            }
         }
         }
     }
     }
 
 

+ 13 - 13
app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt

@@ -201,13 +201,13 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
                 return false
                 return false
             }
             }
         })
         })
-        searchView.setOnQueryTextFocusChangeListener { _, hasFocus ->
-            if (binding.refreshProgressBar.isAutoLoading || (!hasFocus && adapter.isNotEmpty() && searchView.query.isNotBlank())) {
-                visibleInputHelp(false)
-            } else {
-                visibleInputHelp(true)
-            }
-        }
+//        searchView.setOnQueryTextFocusChangeListener { _, hasFocus ->
+//            if (binding.refreshProgressBar.isAutoLoading || (!hasFocus && adapter.isNotEmpty() && searchView.query.isNotBlank())) {
+//                visibleInputHelp(false)
+//            } else {
+//                visibleInputHelp(true)
+//            }
+//        }
         visibleInputHelp(true)
         visibleInputHelp(true)
     }
     }
 
 
@@ -264,16 +264,16 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
     }
     }
 
 
     private fun initOtherView() {
     private fun initOtherView() {
-        binding.fbStartStop.backgroundTintList =
-            Selector.colorBuild()
+//        binding.fbStartStop.backgroundTintList =
+//            Selector.colorBuild()
 //                .setDefaultColor(accentColor)
 //                .setDefaultColor(accentColor)
 //                .setPressedColor(ColorUtils.darkenColor(accentColor))
 //                .setPressedColor(ColorUtils.darkenColor(accentColor))
-                .create()
+//                .create()
         binding.fbStartStop.setOnClickListener {
         binding.fbStartStop.setOnClickListener {
             if (viewModel.isSearchLiveData.value == true) {
             if (viewModel.isSearchLiveData.value == true) {
                 isManualStopSearch = true
                 isManualStopSearch = true
                 viewModel.stop()
                 viewModel.stop()
-                binding.refreshProgressBar.isAutoLoading = false
+                //binding.refreshProgressBar.visibility = GONE
             } else {
             } else {
                 viewModel.search("")
                 viewModel.search("")
             }
             }
@@ -395,7 +395,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
      */
      */
     private fun startSearch() {
     private fun startSearch() {
         binding.refreshProgressBar.visible()
         binding.refreshProgressBar.visible()
-        binding.refreshProgressBar.isAutoLoading = true
+        //binding.refreshProgressBar.isAutoLoading = true
         binding.fbStartStop.setImageResource(R.drawable.ic_stop_black_24dp)
         binding.fbStartStop.setImageResource(R.drawable.ic_stop_black_24dp)
         binding.fbStartStop.visible()
         binding.fbStartStop.visible()
     }
     }
@@ -404,7 +404,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
      * 搜索结束
      * 搜索结束
      */
      */
     private fun searchFinally() {
     private fun searchFinally() {
-        binding.refreshProgressBar.isAutoLoading = false
+        //binding.refreshProgressBar.isAutoLoading = false
         binding.refreshProgressBar.gone()
         binding.refreshProgressBar.gone()
         if (!isManualStopSearch && viewModel.hasMore) {
         if (!isManualStopSearch && viewModel.hasMore) {
             binding.fbStartStop.setImageResource(R.drawable.ic_play_24dp)
             binding.fbStartStop.setImageResource(R.drawable.ic_play_24dp)

+ 2 - 1
app/src/main/java/io/legado/app/ui/config/ThemeListDialog.kt

@@ -8,6 +8,7 @@ import android.view.ViewGroup
 import androidx.appcompat.widget.Toolbar
 import androidx.appcompat.widget.Toolbar
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.LinearLayoutManager
 import io.legado.app.R
 import io.legado.app.R
+import io.legado.app.base.BaseBottomSheetDialogFragment
 import io.legado.app.base.BaseDialogFragment
 import io.legado.app.base.BaseDialogFragment
 import io.legado.app.base.adapter.ItemViewHolder
 import io.legado.app.base.adapter.ItemViewHolder
 import io.legado.app.base.adapter.RecyclerAdapter
 import io.legado.app.base.adapter.RecyclerAdapter
@@ -20,7 +21,7 @@ import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.*
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 
 
-class ThemeListDialog : BaseDialogFragment(R.layout.dialog_recycler_view),
+class ThemeListDialog : BaseBottomSheetDialogFragment(R.layout.dialog_recycler_view),
     Toolbar.OnMenuItemClickListener {
     Toolbar.OnMenuItemClickListener {
 
 
     private val binding by viewBinding(DialogRecyclerViewBinding::bind)
     private val binding by viewBinding(DialogRecyclerViewBinding::bind)

+ 2 - 3
app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt

@@ -56,9 +56,8 @@ class ExploreAdapter(context: Context, val callBack: CallBack) :
             }
             }
 
 
             if (exIndex == holder.layoutPosition) {
             if (exIndex == holder.layoutPosition) {
-                // 使用 MaterialButton 的 icon 属性和旋转动画
                 ivStatus.icon = ContextCompat.getDrawable(context, R.drawable.ic_arrow_right)
                 ivStatus.icon = ContextCompat.getDrawable(context, R.drawable.ic_arrow_right)
-                ivStatus.rotation = 90f // 直接设置90度旋转(向下箭头效果)
+                ivStatus.rotation = 90f
 
 
                 if (scrollTo >= 0) {
                 if (scrollTo >= 0) {
                     callBack.scrollTo(scrollTo)
                     callBack.scrollTo(scrollTo)
@@ -77,7 +76,7 @@ class ExploreAdapter(context: Context, val callBack: CallBack) :
                 }
                 }
             } else {
             } else {
                 ivStatus.icon = ContextCompat.getDrawable(context, R.drawable.ic_arrow_right)
                 ivStatus.icon = ContextCompat.getDrawable(context, R.drawable.ic_arrow_right)
-                ivStatus.rotation = 0f // 重置为0度(向右箭头)
+                ivStatus.rotation = 0f
                 recyclerFlexbox(flexbox)
                 recyclerFlexbox(flexbox)
                 flexbox.gone()
                 flexbox.gone()
             }
             }

+ 3 - 10
app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt

@@ -63,28 +63,21 @@ class ExploreFragment() : VMBaseFragment<ExploreViewModel>(R.layout.fragment_exp
     private val binding by viewBinding(FragmentExploreBinding::bind)
     private val binding by viewBinding(FragmentExploreBinding::bind)
     private val adapter by lazy { ExploreAdapter(requireContext(), this) }
     private val adapter by lazy { ExploreAdapter(requireContext(), this) }
     private val linearLayoutManager by lazy { LinearLayoutManager(context) }
     private val linearLayoutManager by lazy { LinearLayoutManager(context) }
-    private val searchView: SearchView by lazy {
-        binding.titleBar.findViewById(R.id.search_view)
-    }
+    private val searchView: SearchView by lazy { binding.searchLayout.searchView }
     private val diffItemCallBack = ExploreDiffItemCallBack()
     private val diffItemCallBack = ExploreDiffItemCallBack()
     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
 
 
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
-        setSupportToolbar(binding.titleBar.toolbar)
+        setSupportToolbar(binding.topBar)
         initSearchView()
         initSearchView()
         initRecyclerView()
         initRecyclerView()
         initGroupData()
         initGroupData()
         upExploreData()
         upExploreData()
     }
     }
 
 
-    override fun onCompatCreateOptionsMenu(menu: Menu) {
-        super.onCompatCreateOptionsMenu(menu)
-        menuInflater.inflate(R.menu.main_explore, menu)
-        groupsMenu = menu.findItem(R.id.menu_group)?.subMenu
-        upGroupsMenu()
-    }
+
 
 
     override fun onPause() {
     override fun onPause() {
         super.onPause()
         super.onPause()

+ 1 - 1
app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt

@@ -53,7 +53,7 @@ class MyFragment() : BaseFragment(R.layout.fragment_my_config), MainFragmentInte
     private val binding by viewBinding(FragmentMyConfigBinding::bind)
     private val binding by viewBinding(FragmentMyConfigBinding::bind)
 
 
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
-        setSupportToolbar(binding.titleBar.toolbar)
+        setSupportToolbar(binding.topBar)
         val fragmentTag = "prefFragment"
         val fragmentTag = "prefFragment"
         var preferenceFragment = childFragmentManager.findFragmentByTag(fragmentTag)
         var preferenceFragment = childFragmentManager.findFragmentByTag(fragmentTag)
         if (preferenceFragment == null) preferenceFragment = MyPreferenceFragment()
         if (preferenceFragment == null) preferenceFragment = MyPreferenceFragment()

+ 2 - 4
app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt

@@ -62,16 +62,14 @@ class RssFragment() : VMBaseFragment<RssViewModel>(R.layout.fragment_rss),
     private val adapter by lazy {
     private val adapter by lazy {
         RssAdapter(requireContext(), this, this, viewLifecycleOwner.lifecycle)
         RssAdapter(requireContext(), this, this, viewLifecycleOwner.lifecycle)
     }
     }
-    private val searchView: SearchView by lazy {
-        binding.titleBar.findViewById(R.id.search_view)
-    }
+    private val searchView: SearchView by lazy { binding.searchLayout.searchView }
     private var groupsFlowJob: Job? = null
     private var groupsFlowJob: Job? = null
     private var rssFlowJob: Job? = null
     private var rssFlowJob: Job? = null
     private val groups = linkedSetOf<String>()
     private val groups = linkedSetOf<String>()
     private var groupsMenu: SubMenu? = null
     private var groupsMenu: SubMenu? = null
 
 
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
-        setSupportToolbar(binding.titleBar.toolbar)
+        setSupportToolbar(binding.topBar)
         initSearchView()
         initSearchView()
         initRecyclerView()
         initRecyclerView()
         initGroupData()
         initGroupData()

+ 5 - 5
app/src/main/java/io/legado/app/ui/welcome/WelcomeActivity.kt

@@ -31,11 +31,11 @@ open class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
         }
         }
     }
     }
 
 
-    override fun setupSystemBar() {
-        fullScreen()
-        //setStatusBarColorAuto(backgroundColor, true, fullScreen)
-        upNavigationBarColor()
-    }
+//    override fun setupSystemBar() {
+//        fullScreen()
+//        //setStatusBarColorAuto(backgroundColor, true, fullScreen)
+//        upNavigationBarColor()
+//    }
 
 
     override fun upBackgroundImage() {
     override fun upBackgroundImage() {
         if (getPrefBoolean(PreferKey.customWelcome)) {
         if (getPrefBoolean(PreferKey.customWelcome)) {

+ 2 - 2
app/src/main/java/io/legado/app/ui/widget/SearchView.kt

@@ -38,10 +38,10 @@ class SearchView @JvmOverloads constructor(
         try {
         try {
             if (textView == null) {
             if (textView == null) {
                 textView = findViewById(androidx.appcompat.R.id.search_src_text)
                 textView = findViewById(androidx.appcompat.R.id.search_src_text)
-                mSearchHintIcon = this.context.getDrawable(R.drawable.ic_search_hint)
+                //mSearchHintIcon = this.context.getDrawable(R.drawable.ic_search_hint)
             }
             }
             // 改变字体
             // 改变字体
-            textView!!.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
+            //textView!!.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
             textView!!.gravity = Gravity.CENTER_VERTICAL
             textView!!.gravity = Gravity.CENTER_VERTICAL
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
                 textView!!.isLocalePreferredLineHeightForMinimumUsed = false
                 textView!!.isLocalePreferredLineHeightForMinimumUsed = false

+ 17 - 14
app/src/main/java/io/legado/app/ui/widget/recycler/scroller/FastScroller.kt

@@ -7,6 +7,7 @@ import android.content.Context
 import android.graphics.Color
 import android.graphics.Color
 import android.graphics.drawable.Drawable
 import android.graphics.drawable.Drawable
 import android.util.AttributeSet
 import android.util.AttributeSet
+import android.util.TypedValue
 import android.view.MotionEvent
 import android.view.MotionEvent
 import android.view.View
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewGroup
@@ -288,7 +289,6 @@ class FastScroller : LinearLayout {
         visibility = if (enabled) View.VISIBLE else View.INVISIBLE
         visibility = if (enabled) View.VISIBLE else View.INVISIBLE
     }
     }
 
 
-    @Suppress("DEPRECATION")
     @SuppressLint("ClickableViewAccessibility")
     @SuppressLint("ClickableViewAccessibility")
     override fun onTouchEvent(event: MotionEvent): Boolean {
     override fun onTouchEvent(event: MotionEvent): Boolean {
         when (event.action) {
         when (event.action) {
@@ -413,7 +413,7 @@ class FastScroller : LinearLayout {
     }
     }
 
 
     private fun isViewVisible(view: View?): Boolean {
     private fun isViewVisible(view: View?): Boolean {
-        return view != null && view.visibility == View.VISIBLE
+        return view != null && view.isVisible
     }
     }
 
 
     private fun cancelAnimation(animator: ViewPropertyAnimator?) {
     private fun cancelAnimation(animator: ViewPropertyAnimator?) {
@@ -492,7 +492,7 @@ class FastScroller : LinearLayout {
 
 
     private fun setHandleSelected(selected: Boolean) {
     private fun setHandleSelected(selected: Boolean) {
         mHandleView.isSelected = selected
         mHandleView.isSelected = selected
-        DrawableCompat.setTint(mHandleImage!!, if (selected) mBubbleColor else mHandleColor)
+        DrawableCompat.setTint(mHandleImage!!, if (selected) mHandleColor else mHandleColor)
     }
     }
 
 
     private fun layout(context: Context, attrs: AttributeSet?) {
     private fun layout(context: Context, attrs: AttributeSet?) {
@@ -503,21 +503,24 @@ class FastScroller : LinearLayout {
         mHandleView = findViewById(R.id.fastscroll_handle)
         mHandleView = findViewById(R.id.fastscroll_handle)
         mTrackView = findViewById(R.id.fastscroll_track)
         mTrackView = findViewById(R.id.fastscroll_track)
         mScrollbar = findViewById(R.id.fastscroll_scrollbar)
         mScrollbar = findViewById(R.id.fastscroll_scrollbar)
-//        @ColorInt var bubbleColor = ColorUtils.adjustAlpha(context.accentColor, 0.8f)
-//        @ColorInt var handleColor = context.accentColor
-        @ColorInt var trackColor = context.getCompatColor(R.color.transparent30)
-//        @ColorInt var textColor =
-//            if (ColorUtils.isColorLight(bubbleColor)) Color.BLACK else Color.WHITE
+        mHandleImage = mHandleView.drawable?.mutate()
+        val typedValue = TypedValue()
+        context.theme.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue, true)
+        val defaultColor = typedValue.data
+        var bubbleColor = defaultColor
+        var handleColor = defaultColor
+        var trackColor = defaultColor
+        var textColor = defaultColor
         var fadeScrollbar = true
         var fadeScrollbar = true
         var showBubble = false
         var showBubble = false
         var showTrack = true
         var showTrack = true
         if (attrs != null) {
         if (attrs != null) {
             val typedArray = context.obtainStyledAttributes(attrs, R.styleable.FastScroller, 0, 0)
             val typedArray = context.obtainStyledAttributes(attrs, R.styleable.FastScroller, 0, 0)
             try {
             try {
-//                bubbleColor = typedArray.getColor(R.styleable.FastScroller_bubbleColor, bubbleColor)
-//                handleColor = typedArray.getColor(R.styleable.FastScroller_handleColor, handleColor)
+                bubbleColor = typedArray.getColor(R.styleable.FastScroller_bubbleColor, bubbleColor)
+                handleColor = typedArray.getColor(R.styleable.FastScroller_handleColor, handleColor)
                 trackColor = typedArray.getColor(R.styleable.FastScroller_trackColor, trackColor)
                 trackColor = typedArray.getColor(R.styleable.FastScroller_trackColor, trackColor)
-//                textColor = typedArray.getColor(R.styleable.FastScroller_bubbleTextColor, textColor)
+                textColor = typedArray.getColor(R.styleable.FastScroller_bubbleTextColor, textColor)
                 fadeScrollbar =
                 fadeScrollbar =
                     typedArray.getBoolean(R.styleable.FastScroller_fadeScrollbar, fadeScrollbar)
                     typedArray.getBoolean(R.styleable.FastScroller_fadeScrollbar, fadeScrollbar)
                 showBubble = typedArray.getBoolean(R.styleable.FastScroller_showBubble, showBubble)
                 showBubble = typedArray.getBoolean(R.styleable.FastScroller_showBubble, showBubble)
@@ -527,9 +530,9 @@ class FastScroller : LinearLayout {
             }
             }
         }
         }
         setTrackColor(trackColor)
         setTrackColor(trackColor)
-//        setHandleColor(handleColor)
-//        setBubbleColor(bubbleColor)
-//        setBubbleTextColor(textColor)
+        setHandleColor(handleColor)
+        setBubbleColor(bubbleColor)
+        setBubbleTextColor(textColor)
         setFadeScrollbar(fadeScrollbar)
         setFadeScrollbar(fadeScrollbar)
         setBubbleVisible(showBubble)
         setBubbleVisible(showBubble)
         setTrackVisible(showTrack)
         setTrackVisible(showTrack)

+ 2 - 6
app/src/main/res/drawable/bg_searchview.xml

@@ -1,11 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <shape xmlns:android="http://schemas.android.com/apk/res/android" >
     <!-- 角度 -->
     <!-- 角度 -->
-    <corners android:radius="35dp"/>
+    <corners android:radius="36dp"/>
     <!-- 填充色 -->
     <!-- 填充色 -->
-    <solid android:color="@color/transparent10" />
-    <!-- 描边 设置线宽及颜色 -->
-    <stroke
-        android:color="@color/transparent10"
-        android:width="0.5dp" />
+    <solid android:color="?attr/colorSurfaceContainer" />
 </shape>
 </shape>

+ 1 - 1
app/src/main/res/drawable/fastscroll_handle.xml

@@ -18,7 +18,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
     android:shape="rectangle">
     android:shape="rectangle">
 
 
-    <tools:solid android:color="#555555" />
+    <solid android:color="?attr/colorPrimary" />
 
 
     <corners android:radius="@dimen/fastscroll_handle_radius" />
     <corners android:radius="@dimen/fastscroll_handle_radius" />
 
 

+ 1 - 1
app/src/main/res/drawable/fastscroll_track.xml

@@ -18,7 +18,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
     android:shape="rectangle">
     android:shape="rectangle">
 
 
-    <tools:solid android:color="#CCCCCC" />
+    <tools:solid android:color="@color/transparent" />
 
 
     <size android:width="@dimen/fastscroll_track_width" />
     <size android:width="@dimen/fastscroll_track_width" />
 
 

+ 1 - 1
app/src/main/res/drawable/ic_groups.xml

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="?attr/colorControlNormal">
 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="?attr/colorControlNormal">
-    <path android:fillColor="@android:color/white" android:pathData="M260,440L480,80L700,440L260,440ZM700,880Q625,880 572.5,827.5Q520,775 520,700Q520,625 572.5,572.5Q625,520 700,520Q775,520 827.5,572.5Q880,625 880,700Q880,775 827.5,827.5Q775,880 700,880ZM120,860L120,540L440,540L440,860L120,860ZM700,800Q742,800 771,771Q800,742 800,700Q800,658 771,629Q742,600 700,600Q658,600 629,629Q600,658 600,700Q600,742 629,771Q658,800 700,800ZM200,780L360,780L360,620L200,620L200,780ZM402,360L558,360L480,234L402,360ZM480,360L480,360L480,360ZM360,620L360,620L360,620L360,620ZM700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Z"/>
+    <path android:fillColor="@android:color/white" android:pathData="M856,570L570,856Q558,868 543,874Q528,880 513,880Q498,880 483,874Q468,868 456,856L103,503Q92,492 86,477.5Q80,463 80,447L80,160Q80,127 103.5,103.5Q127,80 160,80L447,80Q463,80 478,86.5Q493,93 504,104L856,457Q868,469 873.5,484Q879,499 879,514Q879,529 873.5,543.5Q868,558 856,570ZM513,800L799,514Q799,514 799,514Q799,514 799,514L446,160L160,160Q160,160 160,160Q160,160 160,160L160,446Q160,446 160,446Q160,446 160,446L513,800Q513,800 513,800Q513,800 513,800ZM260,320Q285,320 302.5,302.5Q320,285 320,260Q320,235 302.5,217.5Q285,200 260,200Q235,200 217.5,217.5Q200,235 200,260Q200,285 217.5,302.5Q235,320 260,320ZM480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Z"/>
 </vector>
 </vector>

+ 3 - 9
app/src/main/res/drawable/ic_star_border.xml

@@ -1,9 +1,3 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z" />
-</vector>
+<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="?attr/colorControlNormal">
+    <path android:fillColor="@android:color/white" android:pathData="M480,840L422,788Q321,697 255,631Q189,565 150,512.5Q111,460 95.5,416Q80,372 80,326Q80,232 143,169Q206,106 300,106Q352,106 399,128Q446,150 480,190Q514,150 561,128Q608,106 660,106Q754,106 817,169Q880,232 880,326Q880,372 864.5,416Q849,460 810,512.5Q771,565 705,631Q639,697 538,788L480,840ZM480,732Q576,646 638,584.5Q700,523 736,477.5Q772,432 786,396.5Q800,361 800,326Q800,266 760,226Q720,186 660,186Q613,186 573,212.5Q533,239 518,280L518,280L442,280L442,280Q427,239 387,212.5Q347,186 300,186Q240,186 200,226Q160,266 160,326Q160,361 174,396.5Q188,432 224,477.5Q260,523 322,584.5Q384,646 480,732ZM480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459L480,459L480,459L480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Q480,459 480,459Z"/>
+</vector>

+ 1 - 1
app/src/main/res/drawable/selector_fillet_btn_bg.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <!-- res/drawable/ripple_btn.xml -->
 <!-- res/drawable/ripple_btn.xml -->
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
+    android:color="?attr/colorControlHighlight">
     <item android:drawable="@drawable/shape_fillet_btn" />
     <item android:drawable="@drawable/shape_fillet_btn" />
     <item android:id="@android:id/mask"
     <item android:id="@android:id/mask"
         android:drawable="@drawable/shape_fillet_btn" />
         android:drawable="@drawable/shape_fillet_btn" />

+ 1 - 1
app/src/main/res/drawable/shape_fillet_btn.xml

@@ -2,5 +2,5 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     android:shape="rectangle">
     <corners android:radius="16dp" />
     <corners android:radius="16dp" />
-    <solid android:color="@color/btn_bg_press" />
+    <solid android:color="?attr/colorSurfaceContainer" />
 </shape>
 </shape>

+ 2 - 2
app/src/main/res/layout/activity_book_info.xml

@@ -23,7 +23,7 @@
         <com.google.android.material.appbar.CollapsingToolbarLayout
         <com.google.android.material.appbar.CollapsingToolbarLayout
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="120dp"
             android:layout_height="120dp"
-            app:layout_scrollFlags="scroll|exitUntilCollapsed"
+            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
             app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleLarge"
             app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleLarge"
             app:expandedTitleTextAppearance="@style/TextAppearance.Material3.HeadlineMedium">
             app:expandedTitleTextAppearance="@style/TextAppearance.Material3.HeadlineMedium">
 
 
@@ -33,7 +33,7 @@
                 android:layout_height="?attr/actionBarSize"
                 android:layout_height="?attr/actionBarSize"
                 app:navigationIcon="@drawable/ic_arrow_back"
                 app:navigationIcon="@drawable/ic_arrow_back"
                 app:title=" "
                 app:title=" "
-                app:layout_collapseMode="parallax" />
+                app:layout_collapseMode="pin" />
 
 
         </com.google.android.material.appbar.CollapsingToolbarLayout>
         </com.google.android.material.appbar.CollapsingToolbarLayout>
     </com.google.android.material.appbar.AppBarLayout>
     </com.google.android.material.appbar.AppBarLayout>

+ 3 - 1
app/src/main/res/layout/activity_book_search.xml

@@ -15,10 +15,12 @@
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:title="搜索" />
         app:title="搜索" />
 
 
-    <io.legado.app.ui.widget.anima.RefreshProgressBar
+    <com.google.android.material.progressindicator.LinearProgressIndicator
         android:id="@+id/refresh_progress_bar"
         android:id="@+id/refresh_progress_bar"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="2dp"
         android:layout_height="2dp"
+        android:visibility="gone"
+        android:indeterminate="true"
         app:layout_constraintTop_toBottomOf="@id/title_bar" />
         app:layout_constraintTop_toBottomOf="@id/title_bar" />
 
 
     <io.legado.app.ui.widget.dynamiclayout.DynamicFrameLayout
     <io.legado.app.ui.widget.dynamiclayout.DynamicFrameLayout

+ 1 - 0
app/src/main/res/layout/activity_book_source_edit.xml

@@ -77,6 +77,7 @@
         android:id="@+id/tab_layout"
         android:id="@+id/tab_layout"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
+        app:tabMode="fixed"
         tools:ignore="SpeakableTextPresentCheck" />
         tools:ignore="SpeakableTextPresentCheck" />
 
 
     <androidx.recyclerview.widget.RecyclerView
     <androidx.recyclerview.widget.RecyclerView

+ 8 - 16
app/src/main/res/layout/activity_import_book.xml

@@ -18,11 +18,10 @@
         android:id="@+id/lay_top"
         android:id="@+id/lay_top"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:elevation="1dp"
         android:gravity="center_vertical"
         android:gravity="center_vertical"
         android:minHeight="36dp"
         android:minHeight="36dp"
         android:orientation="horizontal"
         android:orientation="horizontal"
-        android:padding="8dp"
+        android:paddingHorizontal="16dp"
         app:layout_constraintTop_toBottomOf="@id/titleBar">
         app:layout_constraintTop_toBottomOf="@id/titleBar">
 
 
         <TextView
         <TextView
@@ -33,23 +32,16 @@
             android:focusable="true"
             android:focusable="true"
             android:gravity="center_vertical"
             android:gravity="center_vertical"
             android:singleLine="true"
             android:singleLine="true"
-            android:textColor="@color/secondaryText"
-            android:textSize="13sp"
+            android:textSize="14sp"
             tools:text="/" />
             tools:text="/" />
 
 
-        <io.legado.app.ui.widget.text.StrokeTextView
+        <com.google.android.material.button.MaterialButton
             android:id="@+id/tv_go_back"
             android:id="@+id/tv_go_back"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:layout_margin="4dp"
-            android:gravity="center"
-            android:paddingLeft="16dp"
-            android:paddingRight="16dp"
-            android:text="@string/go_back"
-            android:textFontWeight="800"
-            android:textSize="14sp"
-            app:cornerRadius="5dp"
+            android:layout_width="36dp"
+            android:layout_height="36dp"
+            style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
+            app:icon="@drawable/ic_return"
+            app:iconGravity="textStart"
             tools:ignore="UnusedAttribute" />
             tools:ignore="UnusedAttribute" />
     </LinearLayout>
     </LinearLayout>
 
 

+ 14 - 15
app/src/main/res/layout/dialog_bookshelf_config.xml

@@ -18,8 +18,7 @@
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:layout_weight="1"
             android:padding="6dp"
             android:padding="6dp"
-            android:text="@string/group_style"
-            android:textColor="@color/primaryText" />
+            android:text="@string/group_style" />
 
 
         <androidx.appcompat.widget.AppCompatSpinner
         <androidx.appcompat.widget.AppCompatSpinner
             android:id="@+id/sp_group_style"
             android:id="@+id/sp_group_style"
@@ -75,7 +74,7 @@
         app:layout_constraintTop_toBottomOf="@+id/sw_show_bookshelf_fast_scroller"
         app:layout_constraintTop_toBottomOf="@+id/sw_show_bookshelf_fast_scroller"
         app:layout_constraintLeft_toLeftOf="parent">
         app:layout_constraintLeft_toLeftOf="parent">
 
 
-        <io.legado.app.ui.widget.text.AccentTextView
+        <TextView
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_height="match_parent"
             android:padding="6dp"
             android:padding="6dp"
@@ -88,31 +87,31 @@
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="vertical">
             android:orientation="vertical">
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/layout_list"
                 android:text="@string/layout_list"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/layout_grid3"
                 android:text="@string/layout_grid3"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/layout_grid4"
                 android:text="@string/layout_grid4"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/layout_grid5"
                 android:text="@string/layout_grid5"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/layout_grid6"
                 android:text="@string/layout_grid6"
@@ -130,7 +129,7 @@
         app:layout_constraintTop_toBottomOf="@id/sw_show_bookshelf_fast_scroller"
         app:layout_constraintTop_toBottomOf="@id/sw_show_bookshelf_fast_scroller"
         app:layout_constraintRight_toRightOf="parent">
         app:layout_constraintRight_toRightOf="parent">
 
 
-        <io.legado.app.ui.widget.text.AccentTextView
+        <TextView
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_height="match_parent"
             android:padding="6dp"
             android:padding="6dp"
@@ -143,37 +142,37 @@
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="vertical">
             android:orientation="vertical">
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/bookshelf_px_0"
                 android:text="@string/bookshelf_px_0"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/bookshelf_px_1"
                 android:text="@string/bookshelf_px_1"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/bookshelf_px_2"
                 android:text="@string/bookshelf_px_2"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/bookshelf_px_3"
                 android:text="@string/bookshelf_px_3"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/bookshelf_px_4"
                 android:text="@string/bookshelf_px_4"
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
-            <RadioButton
+            <com.google.android.material.radiobutton.MaterialRadioButton
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/bookshelf_px_5"
                 android:text="@string/bookshelf_px_5"

+ 3 - 5
app/src/main/res/layout/dialog_recycler_view.xml

@@ -10,16 +10,14 @@
         android:id="@+id/tool_bar"
         android:id="@+id/tool_bar"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:theme="?attr/actionBarStyle"
-        android:layout_margin="4dp"/>
+        android:theme="?attr/actionBarStyle" />
 
 
     <FrameLayout
     <FrameLayout
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_height="0dp"
-        android:layout_weight="1"
-        android:padding="16dp">
+        android:layout_weight="1">
 
 
-        <io.legado.app.ui.widget.recycler.scroller.FastScrollRecyclerView
+        <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/recycler_view"
             android:id="@+id/recycler_view"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_height="match_parent"

+ 4 - 5
app/src/main/res/layout/dialog_toc_regex_edit.xml

@@ -1,16 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:padding="16dp">
     android:padding="16dp">
 
 
     <LinearLayout
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
         android:layout_gravity="center"
-        android:background="@drawable/shape_card_view"
         android:orientation="vertical"
         android:orientation="vertical"
         tools:ignore="UselessParent">
         tools:ignore="UselessParent">
 
 
@@ -82,4 +81,4 @@
 
 
     </LinearLayout>
     </LinearLayout>
 
 
-</FrameLayout>
+</LinearLayout>

+ 2 - 5
app/src/main/res/layout/fragment_bookshelf1.xml

@@ -12,16 +12,12 @@
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         app:attachToActivity="false"
         app:attachToActivity="false"
-        android:fitsSystemWindows="true"
-        app:title="@string/bookshelf">
+        android:fitsSystemWindows="true">
 
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
         <com.google.android.material.appbar.CollapsingToolbarLayout
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="120dp"
             android:layout_height="120dp"
             app:layout_scrollFlags="scroll|exitUntilCollapsed"
             app:layout_scrollFlags="scroll|exitUntilCollapsed"
-            app:expandedTitleMarginStart="24dp"
-            app:title="@string/bookshelf"
-            app:titleEnabled="true"
             app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleLarge"
             app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleLarge"
             app:expandedTitleTextAppearance="@style/TextAppearance.Material3.HeadlineMedium">
             app:expandedTitleTextAppearance="@style/TextAppearance.Material3.HeadlineMedium">
 
 
@@ -29,6 +25,7 @@
                 android:id="@+id/top_bar"
                 android:id="@+id/top_bar"
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="?attr/actionBarSize"
                 android:layout_height="?attr/actionBarSize"
+                app:title="@string/bookshelf"
                 app:layout_collapseMode="pin" />
                 app:layout_collapseMode="pin" />
 
 
         </com.google.android.material.appbar.CollapsingToolbarLayout>
         </com.google.android.material.appbar.CollapsingToolbarLayout>

+ 47 - 20
app/src/main/res/layout/fragment_explore.xml

@@ -1,27 +1,55 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
+    android:layout_height="match_parent">
 
 
-    <io.legado.app.ui.widget.TitleBar
-        android:id="@+id/title_bar"
+    <com.google.android.material.appbar.AppBarLayout
+        android:id="@+id/app_bar"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        app:attachToActivity="false"
-        app:contentLayout="@layout/view_search"
-        app:layout_constraintTop_toTopOf="parent"
-        app:title="@string/discovery" />
+        android:fitsSystemWindows="true">
 
 
-    <io.legado.app.ui.widget.recycler.RecyclerViewAtPager2
-        android:id="@+id/rv_find"
+        <com.google.android.material.appbar.CollapsingToolbarLayout
+            android:layout_width="match_parent"
+            android:layout_height="120dp"
+            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
+            app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleLarge"
+            app:expandedTitleTextAppearance="@style/TextAppearance.Material3.HeadlineMedium">
+
+            <com.google.android.material.appbar.MaterialToolbar
+                android:id="@+id/top_bar"
+                android:layout_width="match_parent"
+                android:layout_height="?attr/actionBarSize"
+                app:title="@string/discovery"
+                app:layout_collapseMode="pin" />
+
+        </com.google.android.material.appbar.CollapsingToolbarLayout>
+
+
+        <include
+            android:id="@+id/search_layout"
+            layout="@layout/view_search"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginHorizontal="16dp" />
+
+    </com.google.android.material.appbar.AppBarLayout>
+
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        app:layout_constraintTop_toBottomOf="@+id/title_bar"
-        app:layout_constraintBottom_toBottomOf="parent"
-        tools:listitem="@layout/item_find_book" />
+        android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+        <io.legado.app.ui.widget.recycler.RecyclerViewAtPager2
+            android:id="@+id/rv_find"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            tools:listitem="@layout/item_find_book" />
+
+    </androidx.core.widget.NestedScrollView>
 
 
     <TextView
     <TextView
         android:id="@+id/tv_empty_msg"
         android:id="@+id/tv_empty_msg"
@@ -31,10 +59,9 @@
         android:gravity="center"
         android:gravity="center"
         android:visibility="gone"
         android:visibility="gone"
         android:text="@string/explore_empty"
         android:text="@string/explore_empty"
-        app:layout_constraintTop_toBottomOf="@+id/title_bar"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
+        app:layout_anchor="@id/app_bar"
+        app:layout_anchorGravity="bottom|center"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"
         tools:text="TextView" />
         tools:text="TextView" />
 
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>

+ 25 - 7
app/src/main/res/layout/fragment_my_config.xml

@@ -1,21 +1,39 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
+    android:layout_height="match_parent">
 
 
-    <io.legado.app.ui.widget.TitleBar
+    <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/title_bar"
         android:id="@+id/title_bar"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         app:attachToActivity="false"
         app:attachToActivity="false"
-        app:title="@string/my" />
+        android:fitsSystemWindows="true">
+
+        <com.google.android.material.appbar.CollapsingToolbarLayout
+            android:layout_width="match_parent"
+            android:layout_height="120dp"
+            app:layout_scrollFlags="scroll|exitUntilCollapsed"
+            app:title="@string/my"
+            app:titleEnabled="true"
+            app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleLarge"
+            app:expandedTitleTextAppearance="@style/TextAppearance.Material3.HeadlineMedium">
+
+            <com.google.android.material.appbar.MaterialToolbar
+                android:id="@+id/top_bar"
+                android:layout_width="match_parent"
+                android:layout_height="?attr/actionBarSize"
+                app:layout_collapseMode="pin" />
+
+        </com.google.android.material.appbar.CollapsingToolbarLayout>
+    </com.google.android.material.appbar.AppBarLayout>
 
 
     <LinearLayout
     <LinearLayout
         android:id="@+id/pre_fragment"
         android:id="@+id/pre_fragment"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_height="match_parent"
-        android:orientation="vertical" />
+        android:orientation="vertical"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
 
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>

+ 50 - 22
app/src/main/res/layout/fragment_rss.xml

@@ -1,29 +1,58 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
+    android:layout_height="match_parent">
 
 
-    <io.legado.app.ui.widget.TitleBar
-        android:id="@+id/title_bar"
+    <com.google.android.material.appbar.AppBarLayout
+        android:id="@+id/app_bar"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        app:attachToActivity="false"
-        app:contentLayout="@layout/view_search"
-        app:layout_constraintTop_toTopOf="parent"
-        app:title="@string/rss" />
+        android:fitsSystemWindows="true">
 
 
-    <io.legado.app.ui.widget.recycler.RecyclerViewAtPager2
-        android:id="@+id/recycler_view"
+        <com.google.android.material.appbar.CollapsingToolbarLayout
+            android:layout_width="match_parent"
+            android:layout_height="120dp"
+            android:fitsSystemWindows="true"
+            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
+            app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleLarge"
+            app:expandedTitleTextAppearance="@style/TextAppearance.Material3.HeadlineMedium">
+
+            <com.google.android.material.appbar.MaterialToolbar
+                android:id="@+id/top_bar"
+                android:layout_width="match_parent"
+                android:layout_height="?attr/actionBarSize"
+                app:title="@string/discovery"
+                app:layout_collapseMode="pin" />
+
+        </com.google.android.material.appbar.CollapsingToolbarLayout>
+
+        <include
+            android:id="@+id/search_layout"
+            layout="@layout/view_search"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:visibility="gone"
+            android:layout_marginHorizontal="16dp" />
+
+    </com.google.android.material.appbar.AppBarLayout>
+
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        app:layout_constraintTop_toBottomOf="@id/title_bar"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
-        app:spanCount="4"
-        tools:listitem="@layout/item_rss" />
+        android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+        <io.legado.app.ui.widget.recycler.RecyclerViewAtPager2
+            android:id="@+id/recycler_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
+            app:spanCount="4"
+            tools:listitem="@layout/item_rss" />
+
+    </androidx.core.widget.NestedScrollView>
 
 
     <TextView
     <TextView
         android:id="@+id/tv_empty_msg"
         android:id="@+id/tv_empty_msg"
@@ -33,10 +62,9 @@
         android:gravity="center"
         android:gravity="center"
         android:visibility="gone"
         android:visibility="gone"
         android:text="@string/rss_source_empty"
         android:text="@string/rss_source_empty"
-        app:layout_constraintTop_toBottomOf="@+id/title_bar"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
+        app:layout_anchor="@id/app_bar"
+        app:layout_anchorGravity="bottom|center"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"
         tools:text="TextView" />
         tools:text="TextView" />
 
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>

+ 2 - 5
app/src/main/res/layout/item_book_source.xml

@@ -9,7 +9,7 @@
     android:padding="16dp"
     android:padding="16dp"
     android:scrollbars="none">
     android:scrollbars="none">
 
 
-    <io.legado.app.ui.widget.text.AccentTextView
+    <TextView
         android:id="@+id/tv_host_text"
         android:id="@+id/tv_host_text"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
@@ -39,7 +39,6 @@
         android:layout_gravity="center"
         android:layout_gravity="center"
         android:scrollbars="none"
         android:scrollbars="none"
         android:singleLine="true"
         android:singleLine="true"
-        android:textColor="@color/primaryText"
         app:layout_constraintBottom_toTopOf="@id/iv_debug_text"
         app:layout_constraintBottom_toTopOf="@id/iv_debug_text"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toLeftOf="@id/swt_enabled"
         app:layout_constraintRight_toLeftOf="@id/swt_enabled"
@@ -69,7 +68,6 @@
         android:padding="6dp"
         android:padding="6dp"
         android:scrollbars="none"
         android:scrollbars="none"
         android:src="@drawable/ic_edit"
         android:src="@drawable/ic_edit"
-        android:tint="@color/primaryText"
         app:layout_constraintBottom_toTopOf="@id/iv_debug_text"
         app:layout_constraintBottom_toTopOf="@id/iv_debug_text"
         app:layout_constraintRight_toLeftOf="@id/iv_menu_more"
         app:layout_constraintRight_toLeftOf="@id/iv_menu_more"
         app:layout_constraintTop_toBottomOf="@id/barrier" />
         app:layout_constraintTop_toBottomOf="@id/barrier" />
@@ -83,7 +81,6 @@
         android:padding="6dp"
         android:padding="6dp"
         android:scrollbars="none"
         android:scrollbars="none"
         android:src="@drawable/ic_more_vert"
         android:src="@drawable/ic_more_vert"
-        android:tint="@color/primaryText"
         app:layout_constraintBottom_toTopOf="@id/iv_debug_text"
         app:layout_constraintBottom_toTopOf="@id/iv_debug_text"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toBottomOf="@id/barrier"
         app:layout_constraintTop_toBottomOf="@id/barrier"
@@ -114,7 +111,7 @@
         tools:text="@string/debug_hint"
         tools:text="@string/debug_hint"
         tools:visibility="visible" />
         tools:visibility="visible" />
 
 
-    <io.legado.app.lib.theme.view.ThemeProgressBar
+    <ProgressBar
         android:id="@+id/iv_progressBar"
         android:id="@+id/iv_progressBar"
         android:layout_width="25dp"
         android:layout_width="25dp"
         android:layout_height="25dp"
         android:layout_height="25dp"

+ 4 - 5
app/src/main/res/layout/item_dict_rule.xml

@@ -5,7 +5,8 @@
     android:layout_height="wrap_content"
     android:layout_height="wrap_content"
     android:gravity="center"
     android:gravity="center"
     android:orientation="horizontal"
     android:orientation="horizontal"
-    android:padding="8dp">
+    android:background="?attr/selectableItemBackground"
+    android:padding="16dp">
 
 
     <io.legado.app.lib.theme.view.ThemeCheckBox
     <io.legado.app.lib.theme.view.ThemeCheckBox
         android:id="@+id/cb_name"
         android:id="@+id/cb_name"
@@ -31,8 +32,7 @@
         android:background="?android:attr/selectableItemBackgroundBorderless"
         android:background="?android:attr/selectableItemBackgroundBorderless"
         android:contentDescription="@string/edit"
         android:contentDescription="@string/edit"
         android:padding="6dp"
         android:padding="6dp"
-        android:src="@drawable/ic_edit"
-        android:tint="@color/primaryText" />
+        android:src="@drawable/ic_edit" />
 
 
     <androidx.appcompat.widget.AppCompatImageView
     <androidx.appcompat.widget.AppCompatImageView
         android:id="@+id/iv_delete"
         android:id="@+id/iv_delete"
@@ -40,8 +40,7 @@
         android:layout_height="36dp"
         android:layout_height="36dp"
         android:padding="6dp"
         android:padding="6dp"
         android:background="?attr/selectableItemBackgroundBorderless"
         android:background="?attr/selectableItemBackgroundBorderless"
-        android:src="@drawable/ic_outline_delete"
-        android:tint="@color/primaryText"
+        android:src="@drawable/ic_clear_all"
         android:contentDescription="@string/delete"
         android:contentDescription="@string/delete"
         tools:ignore="RtlHardcoded" />
         tools:ignore="RtlHardcoded" />
 
 

+ 4 - 6
app/src/main/res/layout/item_fillet_text.xml

@@ -4,15 +4,13 @@
     android:id="@+id/text_view"
     android:id="@+id/text_view"
     android:layout_width="wrap_content"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_height="wrap_content"
-    android:layout_margin="6dp"
     android:background="@drawable/selector_fillet_btn_bg"
     android:background="@drawable/selector_fillet_btn_bg"
     android:ellipsize="end"
     android:ellipsize="end"
     android:gravity="center"
     android:gravity="center"
-    android:paddingTop="6dp"
-    android:paddingBottom="6dp"
-    android:paddingLeft="12dp"
-    android:paddingRight="12dp"
+    android:paddingTop="8dp"
+    android:paddingBottom="8dp"
+    android:paddingStart="16dp"
+    android:paddingEnd="16dp"
     android:maxLines="1"
     android:maxLines="1"
-    android:textColor="@color/primaryText"
     android:textSize="14sp"
     android:textSize="14sp"
     tools:ignore="UnusedAttribute" />
     tools:ignore="UnusedAttribute" />

+ 2 - 6
app/src/main/res/layout/item_find_book.xml

@@ -39,10 +39,7 @@
 
 
     </LinearLayout>
     </LinearLayout>
 
 
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="start">
+
 
 
         <com.google.android.flexbox.FlexboxLayout
         <com.google.android.flexbox.FlexboxLayout
             android:id="@+id/flexbox"
             android:id="@+id/flexbox"
@@ -50,13 +47,12 @@
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:clipToPadding="false"
             android:clipToPadding="false"
             android:overScrollMode="never"
             android:overScrollMode="never"
-            android:layout_marginTop="6dp"
+            android:layout_marginTop="8dp"
             android:visibility="gone"
             android:visibility="gone"
             app:dividerDrawable="@drawable/shape_space_divider"
             app:dividerDrawable="@drawable/shape_space_divider"
             app:flexDirection="row"
             app:flexDirection="row"
             app:flexWrap="wrap"
             app:flexWrap="wrap"
             app:showDivider="middle" />
             app:showDivider="middle" />
 
 
-    </FrameLayout>
 
 
 </LinearLayout>
 </LinearLayout>

+ 1 - 4
app/src/main/res/layout/item_txt_toc_rule.xml

@@ -7,7 +7,7 @@
     android:background="?attr/selectableItemBackground"
     android:background="?attr/selectableItemBackground"
     android:clickable="true"
     android:clickable="true"
     android:focusable="true"
     android:focusable="true"
-    android:padding="12dp">
+    android:padding="16dp">
 
 
     <io.legado.app.lib.theme.view.ThemeCheckBox
     <io.legado.app.lib.theme.view.ThemeCheckBox
         android:id="@+id/cb_source"
         android:id="@+id/cb_source"
@@ -15,7 +15,6 @@
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="start"
         android:layout_gravity="start"
         android:singleLine="true"
         android:singleLine="true"
-        android:textColor="@color/primaryText"
         app:layout_constraintBottom_toTopOf="@id/title_example"
         app:layout_constraintBottom_toTopOf="@id/title_example"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toLeftOf="@id/swt_enabled"
         app:layout_constraintRight_toLeftOf="@id/swt_enabled"
@@ -43,7 +42,6 @@
         android:contentDescription="@string/edit"
         android:contentDescription="@string/edit"
         android:padding="6dp"
         android:padding="6dp"
         android:src="@drawable/ic_edit"
         android:src="@drawable/ic_edit"
-        android:tint="@color/primaryText"
         app:layout_constraintBottom_toTopOf="@id/title_example"
         app:layout_constraintBottom_toTopOf="@id/title_example"
         app:layout_constraintRight_toLeftOf="@id/iv_menu_more"
         app:layout_constraintRight_toLeftOf="@id/iv_menu_more"
         app:layout_constraintTop_toTopOf="parent" />
         app:layout_constraintTop_toTopOf="parent" />
@@ -56,7 +54,6 @@
         android:contentDescription="@string/more_menu"
         android:contentDescription="@string/more_menu"
         android:padding="6dp"
         android:padding="6dp"
         android:src="@drawable/ic_more_vert"
         android:src="@drawable/ic_more_vert"
-        android:tint="@color/primaryText"
         app:layout_constraintBottom_toTopOf="@id/title_example"
         app:layout_constraintBottom_toTopOf="@id/title_example"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintTop_toTopOf="parent"

+ 3 - 3
app/src/main/res/layout/view_fastscroller.xml

@@ -14,7 +14,7 @@
         android:visibility="gone"
         android:visibility="gone"
         tools:background="@drawable/fastscroll_bubble"
         tools:background="@drawable/fastscroll_bubble"
         tools:text="A"
         tools:text="A"
-        tools:textColor="#ffffff"
+        tools:textColor="?attr/colorPrimary"
         tools:visibility="visible" />
         tools:visibility="visible" />
 
 
     <FrameLayout
     <FrameLayout
@@ -30,7 +30,7 @@
             android:layout_height="match_parent"
             android:layout_height="match_parent"
             android:layout_gravity="center_horizontal"
             android:layout_gravity="center_horizontal"
             tools:ignore="ContentDescription"
             tools:ignore="ContentDescription"
-            tools:src="@drawable/fastscroll_track" />
+            android:src="@drawable/fastscroll_track" />
 
 
         <ImageView
         <ImageView
             android:id="@+id/fastscroll_handle"
             android:id="@+id/fastscroll_handle"
@@ -40,7 +40,7 @@
             android:paddingEnd="@dimen/fastscroll_scrollbar_padding_end"
             android:paddingEnd="@dimen/fastscroll_scrollbar_padding_end"
             android:paddingStart="@dimen/fastscroll_scrollbar_padding_start"
             android:paddingStart="@dimen/fastscroll_scrollbar_padding_start"
             tools:ignore="ContentDescription"
             tools:ignore="ContentDescription"
-            tools:src="@drawable/fastscroll_handle" />
+            android:src="@drawable/fastscroll_handle" />
 
 
     </FrameLayout>
     </FrameLayout>
 
 

+ 1 - 4
app/src/main/res/layout/view_preference.xml

@@ -26,8 +26,7 @@
 
 
     <LinearLayout
     <LinearLayout
         android:orientation="vertical"
         android:orientation="vertical"
-        android:paddingStart="2dp"
-        android:layout_weight="1.0"
+        android:layout_weight="1"
         android:layout_width="0dp"
         android:layout_width="0dp"
         android:layout_height="wrap_content">
         android:layout_height="wrap_content">
 
 
@@ -36,14 +35,12 @@
             android:singleLine="true"
             android:singleLine="true"
             android:textSize="16sp"
             android:textSize="16sp"
             android:text="@string/title"
             android:text="@string/title"
-            android:textColor="@color/primaryText"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="wrap_content" />
             android:layout_height="wrap_content" />
 
 
         <TextView
         <TextView
             android:id="@+id/preference_desc"
             android:id="@+id/preference_desc"
             android:textSize="12sp"
             android:textSize="12sp"
-            android:textColor="@color/tv_text_summary"
             android:text="@string/default1"
             android:text="@string/default1"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"

+ 1 - 12
app/src/main/res/layout/view_preference_category.xml

@@ -6,27 +6,16 @@
     android:layout_height="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical" >
     android:orientation="vertical" >
 
 
-    <View
-        android:id="@+id/preference_divider_above"
-        android:layout_width="match_parent"
-        android:layout_height="8dp" />
 
 
     <TextView
     <TextView
         android:id="@+id/preference_title"
         android:id="@+id/preference_title"
         android:paddingTop="16dp"
         android:paddingTop="16dp"
         android:paddingBottom="8dp"
         android:paddingBottom="8dp"
-        android:background="@drawable/bg_prefs_color"
         android:paddingLeft="16dp"
         android:paddingLeft="16dp"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:text="123"
-        android:textColor="@color/md_light_primary_text"
+        android:textColor="?attr/colorPrimary"
         tools:ignore="RtlHardcoded,RtlSymmetry" />
         tools:ignore="RtlHardcoded,RtlSymmetry" />
 
 
-    <View
-        android:id="@+id/preference_divider_below"
-        android:layout_width="match_parent"
-        android:visibility="gone"
-        android:layout_height="8dp" />
 
 
 </LinearLayout>
 </LinearLayout>

+ 16 - 17
app/src/main/res/layout/view_search.xml

@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <io.legado.app.ui.widget.SearchView
 <io.legado.app.ui.widget.SearchView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:id="@+id/search_view"
-        android:theme="?attr/actionBarStyle"
-        android:background="@drawable/bg_searchview"
-        android:layout_width="match_parent"
-        android:layout_height="36dp"
-        android:layout_marginTop="10dp"
-        android:layout_marginBottom="10dp"
-        android:imeOptions="actionSearch"
-        android:focusable="false"
-        app:searchIcon="@null"
-        app:queryBackground="@null"
-        app:submitBackground="@null"
-        app:searchHintIcon="@drawable/ic_search_hint"
-        app:iconifiedByDefault="false"
-        app:defaultQueryHint="搜索"/>
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/search_view"
+    android:theme="?attr/actionBarStyle"
+    android:background="@drawable/bg_searchview"
+    android:layout_width="match_parent"
+    android:layout_height="40dp"
+    android:layout_marginTop="8dp"
+    android:layout_marginBottom="8dp"
+    android:imeOptions="actionSearch"
+    android:focusable="false"
+    app:searchIcon="@null"
+    app:queryBackground="@null"
+    app:submitBackground="@null"
+    app:iconifiedByDefault="false"
+    app:defaultQueryHint="搜索"/>

+ 2 - 2
app/src/main/res/menu/main_explore.xml

@@ -4,9 +4,9 @@
 
 
     <item
     <item
         android:id="@+id/menu_group"
         android:id="@+id/menu_group"
-        android:showAsAction="always"
         android:title="@string/group"
         android:title="@string/group"
-        android:icon="@drawable/ic_groups">
+        android:icon="@drawable/ic_groups"
+        app:showAsAction="always">
 
 
         <menu />
         <menu />
 
 

+ 0 - 2
app/src/main/res/menu/main_rss.xml

@@ -14,9 +14,7 @@
         android:title="@string/group"
         android:title="@string/group"
         android:icon="@drawable/ic_groups"
         android:icon="@drawable/ic_groups"
         app:showAsAction="always">
         app:showAsAction="always">
-
         <menu />
         <menu />
-
     </item>
     </item>
 
 
     <item
     <item

+ 6 - 0
app/src/main/res/values-night/styles.xml

@@ -1,5 +1,11 @@
 <resources>
 <resources>
 
 
+    <style name="Base.AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
+        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
+        <item name="android:windowLightStatusBar">false</item>
+        <item name="tabStyle">@style/Widget.App.TabLayout</item>
+    </style>
+
     <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark">
     <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark">
 
 
     </style>
     </style>

+ 4 - 4
app/src/main/res/values/dimens.xml

@@ -24,11 +24,11 @@
     <dimen name="fastscroll_bubble_textsize">48sp</dimen>
     <dimen name="fastscroll_bubble_textsize">48sp</dimen>
     <dimen name="fastscroll_bubble_padding">16dp</dimen>
     <dimen name="fastscroll_bubble_padding">16dp</dimen>
 
 
-    <dimen name="fastscroll_handle_height">40dp</dimen>
-    <dimen name="fastscroll_handle_width">8dp</dimen>
-    <dimen name="fastscroll_handle_radius">4dp</dimen>
+    <dimen name="fastscroll_handle_height">48dp</dimen>
+    <dimen name="fastscroll_handle_width">16dp</dimen>
+    <dimen name="fastscroll_handle_radius">8dp</dimen>
 
 
-    <dimen name="fastscroll_track_width">2dp</dimen>
+    <dimen name="fastscroll_track_width">8dp</dimen>
 
 
     <dimen name="fastscroll_scrollbar_margin_top">8dp</dimen>
     <dimen name="fastscroll_scrollbar_margin_top">8dp</dimen>
     <dimen name="fastscroll_scrollbar_margin_bottom">8dp</dimen>
     <dimen name="fastscroll_scrollbar_margin_bottom">8dp</dimen>

+ 2 - 2
app/src/main/res/values/styles.xml

@@ -106,11 +106,11 @@
     </style>
     </style>
 
 
     <style name="AppTheme.AppBarOverlay.Light" parent="ThemeOverlay.Material3.Light">
     <style name="AppTheme.AppBarOverlay.Light" parent="ThemeOverlay.Material3.Light">
-
+        <item name="android:windowLightStatusBar">true</item>
     </style>
     </style>
 
 
     <style name="AppTheme.AppBarOverlay.Dark" parent="ThemeOverlay.Material3.Dark">
     <style name="AppTheme.AppBarOverlay.Dark" parent="ThemeOverlay.Material3.Dark">
-
+        <item name="android:windowLightStatusBar">false</item>
     </style>
     </style>
 
 
 <!--    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.Material3">-->
 <!--    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.Material3">-->