diff --git a/build.gradle b/build.gradle
index d94fb959..38c8722a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -163,6 +163,8 @@ dependencies {
implementation 'io.reactivex.rxjava3:rxjava:3.1.3'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
+ implementation 'me.zhanghai.android.fastscroll:library:1.1.7'
+
// LibSu
implementation 'com.github.topjohnwu.libsu:core:3.1.2'
diff --git a/src/main/kotlin/com/looker/droidify/screen/RepositoriesFragment.kt b/src/main/kotlin/com/looker/droidify/screen/RepositoriesFragment.kt
index 4a013d8f..b6d59e9d 100644
--- a/src/main/kotlin/com/looker/droidify/screen/RepositoriesFragment.kt
+++ b/src/main/kotlin/com/looker/droidify/screen/RepositoriesFragment.kt
@@ -13,7 +13,8 @@ import com.looker.droidify.database.CursorOwner
import com.looker.droidify.service.Connection
import com.looker.droidify.service.SyncService
import com.looker.droidify.utility.Utils
-import com.looker.droidify.widget.RecyclerFastScroller
+import com.looker.droidify.utility.extension.resources.getDrawableCompat
+import me.zhanghai.android.fastscroll.FastScrollerBuilder
class RepositoriesFragment : ScreenFragment(), CursorOwner.Callback {
private var recyclerView: RecyclerView? = null
@@ -38,7 +39,10 @@ class RepositoriesFragment : ScreenFragment(), CursorOwner.Callback {
syncConnection.binder?.setEnabled(repository, isEnabled) == true
})
recyclerView = this
- RecyclerFastScroller(this)
+ FastScrollerBuilder(this)
+ .useMd2Style()
+ .setThumbDrawable(this.context.getDrawableCompat(R.drawable.scrollbar_thumb))
+ .build()
})
}
this.toolbar = fragmentBinding.toolbar
diff --git a/src/main/kotlin/com/looker/droidify/screen/ScreenActivity.kt b/src/main/kotlin/com/looker/droidify/screen/ScreenActivity.kt
index c43cf90f..2b87f94d 100644
--- a/src/main/kotlin/com/looker/droidify/screen/ScreenActivity.kt
+++ b/src/main/kotlin/com/looker/droidify/screen/ScreenActivity.kt
@@ -32,7 +32,8 @@ abstract class ScreenActivity : AppCompatActivity() {
sealed class SpecialIntent {
object Updates : SpecialIntent()
- class Install(val packageName: String?, val status: Int?, val promptIntent: Intent?) : SpecialIntent()
+ class Install(val packageName: String?, val status: Int?, val promptIntent: Intent?) :
+ SpecialIntent()
}
private class FragmentStackItem(
@@ -236,8 +237,7 @@ abstract class ScreenActivity : AppCompatActivity() {
.putExtra(Intent.EXTRA_INTENT, promptIntent)
)
}
- }
- else {
+ } else {
throw IllegalArgumentException("Missing parameters needed to relaunch InstallerService and trigger prompt.")
}
Unit
diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt
index 759e8a26..0b0aa6ba 100644
--- a/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt
+++ b/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt
@@ -18,13 +18,14 @@ import com.looker.droidify.screen.BaseFragment
import com.looker.droidify.ui.adapters.AppListAdapter
import com.looker.droidify.ui.viewmodels.AppListViewModel
import com.looker.droidify.utility.RxUtils
-import com.looker.droidify.widget.RecyclerFastScroller
+import com.looker.droidify.utility.extension.resources.getDrawableCompat
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.schedulers.Schedulers
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
+import me.zhanghai.android.fastscroll.FastScrollerBuilder
class AppListFragment() : BaseFragment(), CursorOwner.Callback {
@@ -67,7 +68,10 @@ class AppListFragment() : BaseFragment(), CursorOwner.Callback {
recycledViewPool.setMaxRecycledViews(AppListAdapter.ViewType.PRODUCT.ordinal, 30)
val adapter = AppListAdapter { screenActivity.navigateProduct(it.packageName) }
this.adapter = adapter
- RecyclerFastScroller(this)
+ FastScrollerBuilder(this)
+ .useMd2Style()
+ .setThumbDrawable(this.context.getDrawableCompat(R.drawable.scrollbar_thumb))
+ .build()
recyclerView = this
}
}
diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt
index dc07584a..eb834f81 100644
--- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt
+++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt
@@ -17,11 +17,12 @@ import com.looker.droidify.entity.Repository
import com.looker.droidify.ui.adapters.AppListAdapter
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
import com.looker.droidify.utility.RxUtils
-import com.looker.droidify.widget.RecyclerFastScroller
+import com.looker.droidify.utility.extension.resources.getDrawableCompat
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
+import me.zhanghai.android.fastscroll.FastScrollerBuilder
class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
@@ -51,7 +52,10 @@ class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
setHasFixedSize(true)
recycledViewPool.setMaxRecycledViews(AppListAdapter.ViewType.PRODUCT.ordinal, 30)
adapter = AppListAdapter { mainActivityX.navigateProduct(it.packageName) }
- RecyclerFastScroller(this)
+ FastScrollerBuilder(this)
+ .useMd2Style()
+ .setThumbDrawable(this.context.getDrawableCompat(R.drawable.scrollbar_thumb))
+ .build()
}
return binding.root
}
diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt
index f09a3440..59442b24 100644
--- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt
+++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt
@@ -8,6 +8,7 @@ import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import com.looker.droidify.R
import com.looker.droidify.database.CursorOwner
import com.looker.droidify.databinding.FragmentInstalledXBinding
import com.looker.droidify.entity.ProductItem
@@ -16,11 +17,12 @@ import com.looker.droidify.ui.items.HAppItem
import com.looker.droidify.ui.items.VAppItem
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
import com.looker.droidify.utility.RxUtils
-import com.looker.droidify.widget.RecyclerFastScroller
+import com.looker.droidify.utility.extension.resources.getDrawableCompat
import com.mikepenz.fastadapter.FastAdapter
import com.mikepenz.fastadapter.adapters.ItemAdapter
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
+import me.zhanghai.android.fastscroll.FastScrollerBuilder
class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
@@ -55,7 +57,10 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
isMotionEventSplittingEnabled = false
isVerticalScrollBarEnabled = false
adapter = installedFastAdapter
- RecyclerFastScroller(this)
+ FastScrollerBuilder(this)
+ .useMd2Style()
+ .setThumbDrawable(this.context.getDrawableCompat(R.drawable.scrollbar_thumb))
+ .build()
}
updatedFastAdapter = FastAdapter.with(updatedItemAdapter)
updatedFastAdapter?.setHasStableIds(true)
@@ -64,7 +69,10 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
isMotionEventSplittingEnabled = false
isVerticalScrollBarEnabled = false
adapter = updatedFastAdapter
- RecyclerFastScroller(this)
+ FastScrollerBuilder(this)
+ .useMd2Style()
+ .setThumbDrawable(this.context.getDrawableCompat(R.drawable.scrollbar_thumb))
+ .build()
}
return binding.root
}
diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt
index df7cc7b3..8b85872b 100644
--- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt
+++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt
@@ -8,6 +8,7 @@ import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import com.looker.droidify.R
import com.looker.droidify.database.CursorOwner
import com.looker.droidify.databinding.FragmentLatestXBinding
import com.looker.droidify.entity.ProductItem
@@ -16,11 +17,12 @@ import com.looker.droidify.ui.items.HAppItem
import com.looker.droidify.ui.items.VAppItem
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
import com.looker.droidify.utility.RxUtils
-import com.looker.droidify.widget.RecyclerFastScroller
+import com.looker.droidify.utility.extension.resources.getDrawableCompat
import com.mikepenz.fastadapter.FastAdapter
import com.mikepenz.fastadapter.adapters.ItemAdapter
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
+import me.zhanghai.android.fastscroll.FastScrollerBuilder
class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
@@ -55,7 +57,10 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
isMotionEventSplittingEnabled = false
isVerticalScrollBarEnabled = false
adapter = updatedFastAdapter
- RecyclerFastScroller(this)
+ FastScrollerBuilder(this)
+ .useMd2Style()
+ .setThumbDrawable(this.context.getDrawableCompat(R.drawable.scrollbar_thumb))
+ .build()
}
newFastAdapter = FastAdapter.with(newItemAdapter)
newFastAdapter?.setHasStableIds(true)
@@ -64,7 +69,10 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
isMotionEventSplittingEnabled = false
isVerticalScrollBarEnabled = false
adapter = newFastAdapter
- RecyclerFastScroller(this)
+ FastScrollerBuilder(this)
+ .useMd2Style()
+ .setThumbDrawable(this.context.getDrawableCompat(R.drawable.scrollbar_thumb))
+ .build()
}
return binding.root
}
diff --git a/src/main/kotlin/com/looker/droidify/widget/RecyclerFastScroller.kt b/src/main/kotlin/com/looker/droidify/widget/RecyclerFastScroller.kt
deleted file mode 100644
index 34cdc4a6..00000000
--- a/src/main/kotlin/com/looker/droidify/widget/RecyclerFastScroller.kt
+++ /dev/null
@@ -1,287 +0,0 @@
-package com.looker.droidify.widget
-
-import android.annotation.SuppressLint
-import android.graphics.Canvas
-import android.graphics.Rect
-import android.os.SystemClock
-import android.view.MotionEvent
-import android.view.ViewGroup
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import com.looker.droidify.utility.extension.resources.getDrawableFromAttr
-import com.looker.droidify.utility.extension.resources.sizeScaled
-import kotlin.math.max
-import kotlin.math.roundToInt
-
-@SuppressLint("ClickableViewAccessibility")
-class RecyclerFastScroller(private val recyclerView: RecyclerView) {
- companion object {
- private const val TRANSITION_IN = 100L
- private const val TRANSITION_OUT = 200L
- private const val TRANSITION_OUT_DELAY = 1000L
-
- private val stateNormal = intArrayOf()
- private val statePressed = intArrayOf(android.R.attr.state_pressed)
- }
-
- private val thumbDrawable =
- recyclerView.context.getDrawableFromAttr(android.R.attr.fastScrollThumbDrawable)
- private val trackDrawable =
- recyclerView.context.getDrawableFromAttr(android.R.attr.fastScrollTrackDrawable)
- private val minTrackSize = recyclerView.resources.sizeScaled(16)
-
- private data class FastScrolling(
- val startAtThumbOffset: Float?,
- val startY: Float,
- val currentY: Float,
- )
-
- private var scrolling = false
- private var fastScrolling: FastScrolling? = null
- private var display = Pair(0L, false)
-
- private val invalidateTransition = Runnable(recyclerView::invalidate)
-
- private fun updateState(scrolling: Boolean, fastScrolling: FastScrolling?) {
- val oldDisplay = this.scrolling || this.fastScrolling != null
- val newDisplay = scrolling || fastScrolling != null
- this.scrolling = scrolling
- this.fastScrolling = fastScrolling
- if (oldDisplay != newDisplay) {
- recyclerView.removeCallbacks(invalidateTransition)
- val time = SystemClock.elapsedRealtime()
- val passed = time - display.first
- val start = if (newDisplay && passed < (TRANSITION_OUT + TRANSITION_OUT_DELAY)) {
- if (passed <= TRANSITION_OUT_DELAY) {
- 0L
- } else {
- time - ((TRANSITION_OUT_DELAY + TRANSITION_OUT - passed).toFloat() /
- TRANSITION_OUT * TRANSITION_IN).toLong()
- }
- } else if (!newDisplay && passed < TRANSITION_IN) {
- time - ((TRANSITION_IN - passed).toFloat() / TRANSITION_IN *
- TRANSITION_OUT).toLong() - TRANSITION_OUT_DELAY
- } else {
- if (!newDisplay) {
- recyclerView.postDelayed(invalidateTransition, TRANSITION_OUT_DELAY)
- }
- time
- }
- display = Pair(start, newDisplay)
- recyclerView.invalidate()
- }
- }
-
- private val scrollListener = object : RecyclerView.OnScrollListener() {
- override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
- updateState(newState != RecyclerView.SCROLL_STATE_IDLE, fastScrolling)
- }
-
- override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
- if (fastScrolling == null) {
- recyclerView.invalidate()
- }
- }
- }
-
- private inline fun withScroll(callback: (itemHeight: Int, thumbHeight: Int, range: Int) -> Unit): Boolean {
- val count = recyclerView.adapter?.itemCount ?: 0
- return count > 0 && run {
- val itemHeight = Rect().apply {
- recyclerView
- .getDecoratedBoundsWithMargins(recyclerView.getChildAt(0), this)
- }.height()
- val scrollCount = count - recyclerView.height / itemHeight
- scrollCount > 0 && run {
- val range = count * itemHeight
- val thumbHeight = max(
- recyclerView.height * recyclerView.height / range,
- thumbDrawable.intrinsicHeight
- )
- range >= recyclerView.height * 2 && run {
- callback(itemHeight, thumbHeight, range)
- true
- }
- }
- }
- }
-
- private fun calculateOffset(thumbHeight: Int, fastScrolling: FastScrolling): Float {
- return if (fastScrolling.startAtThumbOffset != null) {
- (fastScrolling.startAtThumbOffset + (fastScrolling.currentY - fastScrolling.startY) /
- (recyclerView.height - thumbHeight)).coerceIn(0f, 1f)
- } else {
- ((fastScrolling.currentY - thumbHeight / 2f) / (recyclerView.height - thumbHeight)).coerceIn(
- 0f,
- 1f
- )
- }
- }
-
- private fun currentOffset(itemHeight: Int, range: Int): Float {
- val view = recyclerView.getChildAt(0)
- val position = recyclerView.getChildAdapterPosition(view)
- val positionOffset = -view.top
- val scrollPosition = position * itemHeight + positionOffset
- return scrollPosition.toFloat() / (range - recyclerView.height)
- }
-
- private fun scroll(
- itemHeight: Int,
- thumbHeight: Int,
- range: Int,
- fastScrolling: FastScrolling,
- ) {
- val offset = calculateOffset(thumbHeight, fastScrolling)
- val scrollPosition = ((range - recyclerView.height) * offset).roundToInt()
- val position = scrollPosition / itemHeight
- val positionOffset = scrollPosition - position * itemHeight
- val layoutManager = recyclerView.layoutManager as LinearLayoutManager
- layoutManager.scrollToPositionWithOffset(position, -positionOffset)
- }
-
- private val touchListener = object : RecyclerView.OnItemTouchListener {
- private var disallowIntercept = false
-
- private fun handleTouchEvent(event: MotionEvent, intercept: Boolean): Boolean {
- val recyclerView = recyclerView
- val lastFastScrolling = fastScrolling
- return when {
- intercept && disallowIntercept -> {
- false
- }
- event.action == MotionEvent.ACTION_DOWN -> {
- val rtl = recyclerView.layoutDirection == RecyclerView.LAYOUT_DIRECTION_RTL
- val trackWidth = max(
- minTrackSize,
- max(thumbDrawable.intrinsicWidth, trackDrawable.intrinsicWidth)
- )
- val atThumbVertical =
- if (rtl) event.x <= trackWidth else event.x >= recyclerView.width - trackWidth
- atThumbVertical && run {
- withScroll { itemHeight, thumbHeight, range ->
- (recyclerView.parent as? ViewGroup)?.requestDisallowInterceptTouchEvent(
- true
- )
- val offset = currentOffset(itemHeight, range)
- val thumbY = ((recyclerView.height - thumbHeight) * offset).roundToInt()
- val atThumb = event.y >= thumbY && event.y <= thumbY + thumbHeight
- val fastScrolling =
- FastScrolling(if (atThumb) offset else null, event.y, event.y)
- scroll(itemHeight, thumbHeight, range, fastScrolling)
- updateState(scrolling, fastScrolling)
- recyclerView.invalidate()
- }
- }
- }
- else -> lastFastScrolling != null && run {
- val success = withScroll { itemHeight, thumbHeight, range ->
- val fastScrolling = lastFastScrolling.copy(currentY = event.y)
- scroll(itemHeight, thumbHeight, range, fastScrolling)
- updateState(scrolling, fastScrolling)
- recyclerView.invalidate()
- }
- val cancel =
- event.action == MotionEvent.ACTION_UP || event.action == MotionEvent.ACTION_CANCEL
- if (!success || cancel) {
- (recyclerView.parent as? ViewGroup)?.requestDisallowInterceptTouchEvent(
- false
- )
- updateState(scrolling, null)
- recyclerView.invalidate()
- }
- true
- }
- }
- }
-
- override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
- return handleTouchEvent(e, true)
- }
-
- override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {
- handleTouchEvent(e, false)
- }
-
- override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
- this.disallowIntercept = disallowIntercept
- if (disallowIntercept && fastScrolling != null) {
- updateState(scrolling, null)
- recyclerView.invalidate()
- }
- }
- }
-
- private fun handleDraw(canvas: Canvas) {
- withScroll { itemHeight, thumbHeight, range ->
- val display = display
- val time = SystemClock.elapsedRealtime()
- val passed = time - display.first
- val shouldInvalidate = display.second && passed < TRANSITION_IN ||
- !display.second && passed >= TRANSITION_OUT_DELAY && passed < TRANSITION_OUT_DELAY + TRANSITION_OUT
- val stateValue = (if (display.second) {
- passed.toFloat() / TRANSITION_IN
- } else {
- 1f - (passed - TRANSITION_OUT_DELAY).toFloat() / TRANSITION_OUT
- }).coerceIn(0f, 1f)
-
- if (stateValue > 0f) {
- val rtl = recyclerView.layoutDirection == RecyclerView.LAYOUT_DIRECTION_RTL
- val thumbDrawable = thumbDrawable
- val trackDrawable = trackDrawable
- val maxWidth = max(thumbDrawable.intrinsicWidth, trackDrawable.intrinsicHeight)
- val translateX = (maxWidth * (1f - stateValue)).roundToInt()
- val fastScrolling = fastScrolling
-
- val scrollValue = (if (fastScrolling != null) {
- calculateOffset(thumbHeight, fastScrolling)
- } else {
- currentOffset(itemHeight, range)
- }).coerceIn(0f, 1f)
- val thumbY = ((recyclerView.height - thumbHeight) * scrollValue).roundToInt()
-
- trackDrawable.state = if (fastScrolling != null) statePressed else stateNormal
- val trackExtra = (maxWidth - trackDrawable.intrinsicWidth) / 2
- if (rtl) {
- trackDrawable.setBounds(
- trackExtra - translateX, 0,
- trackExtra + trackDrawable.intrinsicWidth - translateX, recyclerView.height
- )
- } else {
- trackDrawable.setBounds(
- recyclerView.width - trackExtra - trackDrawable.intrinsicWidth + translateX,
- 0, recyclerView.width - trackExtra + translateX, recyclerView.height
- )
- }
- trackDrawable.draw(canvas)
- val thumbExtra = (maxWidth - thumbDrawable.intrinsicWidth) / 2
- thumbDrawable.state = if (fastScrolling != null) statePressed else stateNormal
- if (rtl) {
- thumbDrawable.setBounds(
- thumbExtra - translateX, thumbY,
- thumbExtra + thumbDrawable.intrinsicWidth - translateX, thumbY + thumbHeight
- )
- } else {
- thumbDrawable.setBounds(
- recyclerView.width - thumbExtra - thumbDrawable.intrinsicWidth + translateX,
- thumbY, recyclerView.width - thumbExtra + translateX, thumbY + thumbHeight
- )
- }
- thumbDrawable.draw(canvas)
- }
-
- if (shouldInvalidate) {
- recyclerView.invalidate()
- }
- }
- }
-
- init {
- recyclerView.addOnScrollListener(scrollListener)
- recyclerView.addOnItemTouchListener(touchListener)
- recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() {
- override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) =
- handleDraw(c)
- })
- }
-}
diff --git a/src/main/res/drawable/scrollbar_thumb.xml b/src/main/res/drawable/scrollbar_thumb.xml
index 3ee8618b..03fc20a1 100644
--- a/src/main/res/drawable/scrollbar_thumb.xml
+++ b/src/main/res/drawable/scrollbar_thumb.xml
@@ -1,14 +1,12 @@
-
+
-
+
-
+
+
+
\ No newline at end of file
diff --git a/src/main/res/drawable/scrollbar_track.xml b/src/main/res/drawable/scrollbar_track.xml
deleted file mode 100644
index d3856f08..00000000
--- a/src/main/res/drawable/scrollbar_track.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/res/values/styles.xml b/src/main/res/values/styles.xml
index b87cbf28..af0e1522 100644
--- a/src/main/res/values/styles.xml
+++ b/src/main/res/values/styles.xml
@@ -32,9 +32,6 @@
- @android:color/transparent
- true
- - @drawable/scrollbar_thumb
- - @drawable/scrollbar_track
-
- @style/Theme.Tab
- @style/Theme.Switch
- @style/Theme.Toolbar
@@ -72,9 +69,6 @@
- @color/grey_dark
- @android:color/transparent
- - @drawable/scrollbar_thumb
- - @drawable/scrollbar_track
-
- @style/Theme.Tab
- @style/Theme.Switch
- @style/Theme.Toolbar
@@ -112,9 +106,6 @@
- @color/md_theme_dark_surface
- @android:color/transparent
- - @drawable/scrollbar_thumb
- - @drawable/scrollbar_track
-
- @style/Theme.Tab
- @style/Theme.Switch
- @style/Theme.Toolbar