deps: update to mdc 1.8.0-alpha01
FINALLY update to MDC 1.7.0. After over half a year. I have been continually blocked by doing this due to this absurd ripple bug that was so continually frustrating. Today, I finally figred out how to hack a fix in by using R E F L E C T I O N and manually disabling the bugged code path since google apparently can't be bothered to fix it. Now, you might wonder why I didn't update to 1.8.0. That is because there is ANOTHER RIPPLE BUG. THIS TIME WITH THE TAB LAYOUT. AND ONLY IF IT'S IN A COLLAPSING TOOLBAR LAYOUT. Can't wait to finally use the new 1.8.0 features in December!
This commit is contained in:
parent
bc96c761a0
commit
1826ae3215
31 changed files with 146 additions and 77 deletions
|
@ -67,7 +67,7 @@ dependencies {
|
||||||
|
|
||||||
// General
|
// General
|
||||||
// 1.4.0 is used in order to avoid a ripple bug in material components
|
// 1.4.0 is used in order to avoid a ripple bug in material components
|
||||||
implementation "androidx.appcompat:appcompat:1.4.0"
|
implementation "androidx.appcompat:appcompat:1.6.1"
|
||||||
implementation "androidx.core:core-ktx:1.9.0"
|
implementation "androidx.core:core-ktx:1.9.0"
|
||||||
implementation "androidx.activity:activity-ktx:1.6.1"
|
implementation "androidx.activity:activity-ktx:1.6.1"
|
||||||
implementation "androidx.fragment:fragment-ktx:1.5.5"
|
implementation "androidx.fragment:fragment-ktx:1.5.5"
|
||||||
|
@ -113,14 +113,16 @@ dependencies {
|
||||||
implementation fileTree(dir: "libs", include: ["extension-*.aar"])
|
implementation fileTree(dir: "libs", include: ["extension-*.aar"])
|
||||||
|
|
||||||
// Image loading
|
// Image loading
|
||||||
implementation "io.coil-kt:coil-base:2.1.0"
|
implementation "io.coil-kt:coil-base:2.2.0"
|
||||||
|
|
||||||
// Material
|
// Material
|
||||||
// Locked below 1.7.0-alpha03 to avoid the same ripple bug
|
// TODO: Stuck on 1.8.0-alpha01 until ripple bug with tab layout can be worked around
|
||||||
implementation "com.google.android.material:material:1.7.0-alpha02"
|
// TODO: Exactly figure out the conditions that the 1.7.0 ripple bug occurred so you can just
|
||||||
|
// PR a fix.
|
||||||
|
implementation "com.google.android.material:material:1.8.0-alpha01"
|
||||||
|
|
||||||
// Dependency Injection
|
// Dependency Injection
|
||||||
def dagger_version = "2.40"
|
def dagger_version = "2.44.2"
|
||||||
implementation "com.google.dagger:dagger:$dagger_version"
|
implementation "com.google.dagger:dagger:$dagger_version"
|
||||||
kapt "com.google.dagger:dagger-compiler:$dagger_version"
|
kapt "com.google.dagger:dagger-compiler:$dagger_version"
|
||||||
implementation "com.google.dagger:hilt-android:$hilt_version"
|
implementation "com.google.dagger:hilt-android:$hilt_version"
|
||||||
|
|
|
@ -143,8 +143,8 @@ class SongImpl(rawSong: RawSong, musicSettings: MusicSettings) : Song {
|
||||||
override fun resolveGenreContents(context: Context) = resolveNames(context, genres)
|
override fun resolveGenreContents(context: Context) = resolveNames(context, genres)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The [RawAlbum] instances collated by the [Song]. This can be used to group [Song]s
|
* The [RawAlbum] instances collated by the [Song]. This can be used to group [Song]s into an
|
||||||
* into an [Album].
|
* [Album].
|
||||||
*/
|
*/
|
||||||
val rawAlbum =
|
val rawAlbum =
|
||||||
RawAlbum(
|
RawAlbum(
|
||||||
|
@ -167,8 +167,8 @@ class SongImpl(rawSong: RawSong, musicSettings: MusicSettings) : Song {
|
||||||
rawIndividualArtists.ifEmpty { rawAlbumArtists }.ifEmpty { listOf(RawArtist()) }
|
rawIndividualArtists.ifEmpty { rawAlbumArtists }.ifEmpty { listOf(RawArtist()) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The [RawGenre] instances collated by the [Song]. This can be used to group up [Song]s
|
* The [RawGenre] instances collated by the [Song]. This can be used to group up [Song]s into a
|
||||||
* into a [Genre]. ID3v2 Genre names are automatically converted to their resolved names.
|
* [Genre]. ID3v2 Genre names are automatically converted to their resolved names.
|
||||||
*/
|
*/
|
||||||
val rawGenres =
|
val rawGenres =
|
||||||
rawSong.genreNames
|
rawSong.genreNames
|
||||||
|
@ -233,8 +233,8 @@ class SongImpl(rawSong: RawSong, musicSettings: MusicSettings) : Song {
|
||||||
/**
|
/**
|
||||||
* Library-backed implementation of [Album].
|
* Library-backed implementation of [Album].
|
||||||
* @param rawAlbum The [RawAlbum] to derive the member data from.
|
* @param rawAlbum The [RawAlbum] to derive the member data from.
|
||||||
* @param songs The [Song]s that are a part of this [Album]. These items will be linked to
|
* @param songs The [Song]s that are a part of this [Album]. These items will be linked to this
|
||||||
* this [Album].
|
* [Album].
|
||||||
* @author Alexander Capehart (OxygenCobalt)
|
* @author Alexander Capehart (OxygenCobalt)
|
||||||
*/
|
*/
|
||||||
class AlbumImpl(val rawAlbum: RawAlbum, override val songs: List<SongImpl>) : Album {
|
class AlbumImpl(val rawAlbum: RawAlbum, override val songs: List<SongImpl>) : Album {
|
||||||
|
@ -334,9 +334,9 @@ class AlbumImpl(val rawAlbum: RawAlbum, override val songs: List<SongImpl>) : Al
|
||||||
/**
|
/**
|
||||||
* Library-backed implementation of [Artist].
|
* Library-backed implementation of [Artist].
|
||||||
* @param rawArtist The [RawArtist] to derive the member data from.
|
* @param rawArtist The [RawArtist] to derive the member data from.
|
||||||
* @param songAlbums A list of the [Song]s and [Album]s that are a part of this [Artist]
|
* @param songAlbums A list of the [Song]s and [Album]s that are a part of this [Artist] , either
|
||||||
* , either through artist or album artist tags. Providing [Song]s to the artist is optional.
|
* through artist or album artist tags. Providing [Song]s to the artist is optional. These instances
|
||||||
* These instances will be linked to this [Artist].
|
* will be linked to this [Artist].
|
||||||
* @author Alexander Capehart (OxygenCobalt)
|
* @author Alexander Capehart (OxygenCobalt)
|
||||||
*/
|
*/
|
||||||
class ArtistImpl(private val rawArtist: RawArtist, songAlbums: List<Music>) : Artist {
|
class ArtistImpl(private val rawArtist: RawArtist, songAlbums: List<Music>) : Artist {
|
||||||
|
@ -404,8 +404,8 @@ class ArtistImpl(private val rawArtist: RawArtist, songAlbums: List<Music>) : Ar
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the original position of this [Artist]'s [RawArtist] within the given [RawArtist]
|
* Returns the original position of this [Artist]'s [RawArtist] within the given [RawArtist]
|
||||||
* list. This can be used to create a consistent ordering within child [Artist] lists based
|
* list. This can be used to create a consistent ordering within child [Artist] lists based on
|
||||||
* on the original tag order.
|
* the original tag order.
|
||||||
* @param rawArtists The [RawArtist] instances to check. It is assumed that this [Artist]'s
|
* @param rawArtists The [RawArtist] instances to check. It is assumed that this [Artist]'s
|
||||||
* [RawArtist] will be within the list.
|
* [RawArtist] will be within the list.
|
||||||
* @return The index of the [Artist]'s [RawArtist] within the list.
|
* @return The index of the [Artist]'s [RawArtist] within the list.
|
||||||
|
@ -467,9 +467,9 @@ class GenreImpl(private val rawGenre: RawGenre, override val songs: List<SongImp
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the original position of this [Genre]'s [RawGenre] within the given [RawGenre]
|
* Returns the original position of this [Genre]'s [RawGenre] within the given [RawGenre] list.
|
||||||
* list. This can be used to create a consistent ordering within child [Genre] lists based
|
* This can be used to create a consistent ordering within child [Genre] lists based on the
|
||||||
* on the original tag order.
|
* original tag order.
|
||||||
* @param rawGenres The [RawGenre] instances to check. It is assumed that this [Genre] 's
|
* @param rawGenres The [RawGenre] instances to check. It is assumed that this [Genre] 's
|
||||||
* [RawGenre] will be within the list.
|
* [RawGenre] will be within the list.
|
||||||
* @return The index of the [Genre]'s [RawGenre] within the list.
|
* @return The index of the [Genre]'s [RawGenre] within the list.
|
||||||
|
|
|
@ -366,6 +366,10 @@ constructor(
|
||||||
mediaStoreJob.await()
|
mediaStoreJob.await()
|
||||||
metadataJob.await()
|
metadataJob.await()
|
||||||
|
|
||||||
|
if (rawSongs.isEmpty()) {
|
||||||
|
throw Indexer.NoMusicException()
|
||||||
|
}
|
||||||
|
|
||||||
// Successfully loaded the library, now save the cache and create the library in
|
// Successfully loaded the library, now save the cache and create the library in
|
||||||
// parallel.
|
// parallel.
|
||||||
emitIndexing(Indexer.Indexing.Indeterminate)
|
emitIndexing(Indexer.Indexing.Indeterminate)
|
||||||
|
|
|
@ -22,6 +22,7 @@ import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import org.oxycblt.auxio.R
|
import org.oxycblt.auxio.R
|
||||||
|
import org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
import org.oxycblt.auxio.util.getInteger
|
import org.oxycblt.auxio.util.getInteger
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -32,7 +33,7 @@ import org.oxycblt.auxio.util.getInteger
|
||||||
class AnimatedMaterialButton
|
class AnimatedMaterialButton
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
|
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
|
||||||
MaterialButton(context, attrs, defStyleAttr) {
|
RippleFixMaterialButton(context, attrs, defStyleAttr) {
|
||||||
private var currentCornerRadiusRatio = 0f
|
private var currentCornerRadiusRatio = 0f
|
||||||
private var animator: ValueAnimator? = null
|
private var animator: ValueAnimator? = null
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,13 @@
|
||||||
package org.oxycblt.auxio.settings.ui
|
package org.oxycblt.auxio.settings.ui
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.appcompat.widget.AppCompatButton
|
||||||
import androidx.preference.PreferenceDialogFragmentCompat
|
import androidx.preference.PreferenceDialogFragmentCompat
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import org.oxycblt.auxio.BuildConfig
|
import org.oxycblt.auxio.BuildConfig
|
||||||
import org.oxycblt.auxio.R
|
import org.oxycblt.auxio.R
|
||||||
|
import org.oxycblt.auxio.util.fixDoubleRipple
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The companion dialog to [IntListPreference]. Use [from] to create an instance.
|
* The companion dialog to [IntListPreference]. Use [from] to create an instance.
|
||||||
|
@ -32,6 +35,16 @@ class IntListPreferenceDialog : PreferenceDialogFragmentCompat() {
|
||||||
get() = (preference as IntListPreference)
|
get() = (preference as IntListPreference)
|
||||||
private var pendingValueIndex = -1
|
private var pendingValueIndex = -1
|
||||||
|
|
||||||
|
override fun onStart() {
|
||||||
|
super.onStart()
|
||||||
|
|
||||||
|
(requireDialog() as AlertDialog).apply {
|
||||||
|
(getButton(AlertDialog.BUTTON_NEUTRAL) as AppCompatButton).fixDoubleRipple()
|
||||||
|
(getButton(AlertDialog.BUTTON_POSITIVE) as AppCompatButton).fixDoubleRipple()
|
||||||
|
(getButton(AlertDialog.BUTTON_NEGATIVE) as AppCompatButton).fixDoubleRipple()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?) =
|
override fun onCreateDialog(savedInstanceState: Bundle?) =
|
||||||
// PreferenceDialogFragmentCompat does not allow us to customize the actual creation
|
// PreferenceDialogFragmentCompat does not allow us to customize the actual creation
|
||||||
// of the alert dialog, so we have to override onCreateDialog and create a new dialog
|
// of the alert dialog, so we have to override onCreateDialog and create a new dialog
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2023 Auxio Project
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.oxycblt.auxio.ui
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import androidx.annotation.AttrRes
|
||||||
|
import com.google.android.material.button.MaterialButton
|
||||||
|
import org.oxycblt.auxio.util.fixDoubleRipple
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fixes an issue where double ripples appear on [MaterialButton] from AppCompat 1.5 afterwards due
|
||||||
|
* to a currently unfixed change.
|
||||||
|
* @author Alexander Capehart (OxygenCobalt)
|
||||||
|
*/
|
||||||
|
open class RippleFixMaterialButton
|
||||||
|
@JvmOverloads
|
||||||
|
constructor(context: Context, attrs: AttributeSet? = null, @AttrRes defStyleAttr: Int = 0) :
|
||||||
|
MaterialButton(context, attrs, defStyleAttr) {
|
||||||
|
init {
|
||||||
|
fixDoubleRipple()
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,9 +22,11 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.appcompat.widget.AppCompatButton
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
import org.oxycblt.auxio.util.fixDoubleRipple
|
||||||
import org.oxycblt.auxio.util.logD
|
import org.oxycblt.auxio.util.logD
|
||||||
import org.oxycblt.auxio.util.unlikelyToBeNull
|
import org.oxycblt.auxio.util.unlikelyToBeNull
|
||||||
|
|
||||||
|
@ -102,6 +104,16 @@ abstract class ViewBindingDialogFragment<VB : ViewBinding> : DialogFragment() {
|
||||||
logD("Fragment created")
|
logD("Fragment created")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onStart() {
|
||||||
|
super.onStart()
|
||||||
|
|
||||||
|
(requireDialog() as AlertDialog).apply {
|
||||||
|
(getButton(AlertDialog.BUTTON_NEUTRAL) as AppCompatButton).fixDoubleRipple()
|
||||||
|
(getButton(AlertDialog.BUTTON_POSITIVE) as AppCompatButton).fixDoubleRipple()
|
||||||
|
(getButton(AlertDialog.BUTTON_NEGATIVE) as AppCompatButton).fixDoubleRipple()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final override fun onDestroyView() {
|
final override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
onDestroyBinding(unlikelyToBeNull(_binding))
|
onDestroyBinding(unlikelyToBeNull(_binding))
|
||||||
|
|
|
@ -24,6 +24,7 @@ import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowInsets
|
import android.view.WindowInsets
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
|
import androidx.appcompat.widget.AppCompatButton
|
||||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
import androidx.core.graphics.Insets
|
import androidx.core.graphics.Insets
|
||||||
import androidx.core.graphics.drawable.DrawableCompat
|
import androidx.core.graphics.drawable.DrawableCompat
|
||||||
|
@ -106,6 +107,17 @@ val ViewBinding.context: Context
|
||||||
*/
|
*/
|
||||||
fun RecyclerView.canScroll() = computeVerticalScrollRange() > height
|
fun RecyclerView.canScroll() = computeVerticalScrollRange() > height
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fix the double ripple that appears in MaterialButton instances due to an issue with AppCompat 1.5
|
||||||
|
* or higher.
|
||||||
|
*/
|
||||||
|
fun AppCompatButton.fixDoubleRipple() {
|
||||||
|
AppCompatButton::class.java.getDeclaredField("mBackgroundTintHelper").apply {
|
||||||
|
isAccessible = true
|
||||||
|
set(this@fixDoubleRipple, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the [CoordinatorLayout.Behavior] of a [View], or null if the [View] is not part of a
|
* Get the [CoordinatorLayout.Behavior] of a [View], or null if the [View] is not part of a
|
||||||
* [CoordinatorLayout] or does not have a [CoordinatorLayout.Behavior].
|
* [CoordinatorLayout] or does not have a [CoordinatorLayout.Behavior].
|
||||||
|
|
|
@ -87,7 +87,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_repeat"
|
android:id="@+id/playback_repeat"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_skip_prev"
|
android:id="@+id/playback_skip_prev"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -124,7 +124,7 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:icon="@drawable/ic_play_24" />
|
tools:icon="@drawable/ic_play_24" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_skip_next"
|
android:id="@+id/playback_skip_next"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -136,7 +136,7 @@
|
||||||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_shuffle"
|
android:id="@+id/playback_shuffle"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
||||||
tools:text="Info B" />
|
tools:text="Info B" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_play_button"
|
android:id="@+id/detail_play_button"
|
||||||
style="@style/Widget.Auxio.Button.Secondary"
|
style="@style/Widget.Auxio.Button.Secondary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_shuffle_button"
|
android:id="@+id/detail_shuffle_button"
|
||||||
style="@style/Widget.Auxio.Button.Primary"
|
style="@style/Widget.Auxio.Button.Primary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
||||||
tools:text="Info B" />
|
tools:text="Info B" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_play_button"
|
android:id="@+id/detail_play_button"
|
||||||
style="@style/Widget.Auxio.Button.Secondary"
|
style="@style/Widget.Auxio.Button.Secondary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_cover" />
|
app:layout_constraintTop_toBottomOf="@+id/detail_cover" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_shuffle_button"
|
android:id="@+id/detail_shuffle_button"
|
||||||
style="@style/Widget.Auxio.Button.Primary"
|
style="@style/Widget.Auxio.Button.Primary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_repeat"
|
android:id="@+id/playback_repeat"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -102,7 +102,7 @@
|
||||||
app:layout_constraintHorizontal_chainStyle="packed"
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_skip_prev"
|
android:id="@+id/playback_skip_prev"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -127,7 +127,7 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:icon="@drawable/ic_pause_24" />
|
tools:icon="@drawable/ic_pause_24" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_skip_next"
|
android:id="@+id/playback_skip_next"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_shuffle"
|
android:id="@+id/playback_shuffle"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
tools:text="Info B" />
|
tools:text="Info B" />
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_play_button"
|
android:id="@+id/detail_play_button"
|
||||||
style="@style/Widget.Auxio.Button.Secondary"
|
style="@style/Widget.Auxio.Button.Secondary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -88,7 +88,7 @@
|
||||||
app:layout_constraintStart_toEndOf="@+id/detail_cover"
|
app:layout_constraintStart_toEndOf="@+id/detail_cover"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_shuffle_button"
|
android:id="@+id/detail_shuffle_button"
|
||||||
style="@style/Widget.Auxio.Button.Primary"
|
style="@style/Widget.Auxio.Button.Primary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
app:layout_constraintTop_toBottomOf="@+id/detail_subhead"
|
||||||
tools:text="Info B" />
|
tools:text="Info B" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_play_button"
|
android:id="@+id/detail_play_button"
|
||||||
style="@style/Widget.Auxio.Button.Secondary"
|
style="@style/Widget.Auxio.Button.Secondary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
app:layout_constraintStart_toEndOf="@+id/detail_cover"
|
app:layout_constraintStart_toEndOf="@+id/detail_cover"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_shuffle_button"
|
android:id="@+id/detail_shuffle_button"
|
||||||
style="@style/Widget.Auxio.Button.Primary"
|
style="@style/Widget.Auxio.Button.Primary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<com.google.android.material.switchmaterial.SwitchMaterial xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:id="@+id/switchWidget"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:thumb="@drawable/ui_m3_switch_thumb"
|
|
||||||
app:thumbTint="@color/sel_m3_switch_thumb"
|
|
||||||
app:track="@drawable/ui_m3_switch_track"
|
|
||||||
app:trackTint="@color/sel_m3_switch_track" />
|
|
|
@ -35,7 +35,7 @@
|
||||||
app:selectionRequired="true"
|
app:selectionRequired="true"
|
||||||
app:singleSelection="true">
|
app:singleSelection="true">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/dirs_mode_exclude"
|
android:id="@+id/dirs_mode_exclude"
|
||||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
tools:icon="@drawable/ic_check_24"
|
tools:icon="@drawable/ic_check_24"
|
||||||
android:text="@string/set_dirs_mode_exclude" />
|
android:text="@string/set_dirs_mode_exclude" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/dirs_mode_include"
|
android:id="@+id/dirs_mode_include"
|
||||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
android:text="@string/set_dirs_list"
|
android:text="@string/set_dirs_list"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/dirs_list_header_divider" />
|
app:layout_constraintTop_toBottomOf="@+id/dirs_list_header_divider" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:id="@+id/dirs_add"
|
android:id="@+id/dirs_add"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -10,8 +10,7 @@
|
||||||
|
|
||||||
<org.oxycblt.auxio.ui.CoordinatorAppBarLayout
|
<org.oxycblt.auxio.ui.CoordinatorAppBarLayout
|
||||||
android:id="@+id/home_appbar"
|
android:id="@+id/home_appbar"
|
||||||
style="@style/Widget.Auxio.AppBarLayout"
|
style="@style/Widget.Auxio.AppBarLayout">
|
||||||
android:fitsSystemWindows="true">
|
|
||||||
|
|
||||||
<org.oxycblt.auxio.list.selection.SelectionToolbarOverlay
|
<org.oxycblt.auxio.list.selection.SelectionToolbarOverlay
|
||||||
android:id="@+id/home_selection_toolbar"
|
android:id="@+id/home_selection_toolbar"
|
||||||
|
@ -98,7 +97,7 @@
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/home_indexing_action"
|
app:layout_constraintBottom_toBottomOf="@+id/home_indexing_action"
|
||||||
app:layout_constraintTop_toTopOf="@+id/home_indexing_action" />
|
app:layout_constraintTop_toTopOf="@+id/home_indexing_action" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/home_indexing_action"
|
android:id="@+id/home_indexing_action"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_play_pause"
|
android:id="@+id/playback_play_pause"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
android:contentDescription="@string/desc_play_pause"
|
android:contentDescription="@string/desc_play_pause"
|
||||||
app:icon="@drawable/sel_playing_state_24" />
|
app:icon="@drawable/sel_playing_state_24" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_secondary_action"
|
android:id="@+id/playback_secondary_action"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -102,7 +102,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_repeat"
|
android:id="@+id/playback_repeat"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
app:layout_constraintTop_toTopOf="@+id/playback_skip_prev" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_skip_prev"
|
android:id="@+id/playback_skip_prev"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:icon="@drawable/ic_play_24" />
|
tools:icon="@drawable/ic_play_24" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_skip_next"
|
android:id="@+id/playback_skip_next"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -151,7 +151,7 @@
|
||||||
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
app:layout_constraintStart_toEndOf="@+id/playback_play_pause"
|
||||||
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
app:layout_constraintTop_toTopOf="@+id/playback_play_pause" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/playback_shuffle"
|
android:id="@+id/playback_shuffle"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Large"
|
style="@style/Widget.Auxio.Button.Icon.Large"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
android:padding="@dimen/spacing_tiny"
|
android:padding="@dimen/spacing_tiny"
|
||||||
android:theme="@style/ThemeOverlay.Accent">
|
android:theme="@style/ThemeOverlay.Accent">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/accent"
|
android:id="@+id/accent"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?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.constraintlayout.widget.ConstraintLayout 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"
|
||||||
|
@ -75,7 +74,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/song_name"
|
app:layout_constraintTop_toBottomOf="@+id/song_name"
|
||||||
tools:text="16:16" />
|
tools:text="16:16" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/song_menu"
|
android:id="@+id/song_menu"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
tools:text="Info B" />
|
tools:text="Info B" />
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_play_button"
|
android:id="@+id/detail_play_button"
|
||||||
style="@style/Widget.Auxio.Button.Secondary"
|
style="@style/Widget.Auxio.Button.Secondary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -75,7 +75,7 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
app:layout_constraintTop_toBottomOf="@+id/detail_info" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/detail_shuffle_button"
|
android:id="@+id/detail_shuffle_button"
|
||||||
style="@style/Widget.Auxio.Button.Primary"
|
style="@style/Widget.Auxio.Button.Primary"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
|
android:textAppearance="@style/TextAppearance.Auxio.BodyLarge"
|
||||||
tools:text="primary:path/to/music" />
|
tools:text="primary:path/to/music" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/dir_delete"
|
android:id="@+id/dir_delete"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/parent_name"
|
app:layout_constraintTop_toBottomOf="@+id/parent_name"
|
||||||
tools:text="Info" />
|
tools:text="Info" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/parent_menu"
|
android:id="@+id/parent_menu"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/song_name"
|
app:layout_constraintTop_toBottomOf="@+id/song_name"
|
||||||
tools:text="Artist / Album" />
|
tools:text="Artist / Album" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/song_drag_handle"
|
android:id="@+id/song_drag_handle"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
app:layout_constraintTop_toBottomOf="@+id/song_name"
|
app:layout_constraintTop_toBottomOf="@+id/song_name"
|
||||||
tools:text="Info" />
|
tools:text="Info" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/song_menu"
|
android:id="@+id/song_menu"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
tools:text="Songs" />
|
tools:text="Songs" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/header_button"
|
android:id="@+id/header_button"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
tools:ignore="RtlSymmetry,contentDescription"
|
tools:ignore="RtlSymmetry,contentDescription"
|
||||||
tools:text="Artists" />
|
tools:text="Artists" />
|
||||||
|
|
||||||
<Button
|
<org.oxycblt.auxio.ui.RippleFixMaterialButton
|
||||||
android:id="@+id/tab_drag_handle"
|
android:id="@+id/tab_drag_handle"
|
||||||
style="@style/Widget.Auxio.Button.Icon.Small"
|
style="@style/Widget.Auxio.Button.Icon.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<com.google.android.material.switchmaterial.SwitchMaterial xmlns:android="http://schemas.android.com/apk/res/android"
|
<com.google.android.material.materialswitch.MaterialSwitch xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/switchWidget"
|
android:id="@+id/switchWidget"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
|
@ -5,8 +5,6 @@
|
||||||
<style name="Widget.Auxio.AppBarLayout" parent="Widget.Material3.AppBarLayout">
|
<style name="Widget.Auxio.AppBarLayout" parent="Widget.Material3.AppBarLayout">
|
||||||
<item name="android:layout_width">match_parent</item>
|
<item name="android:layout_width">match_parent</item>
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<!-- Resolve lifted state flickering when scrolling fast. -->
|
|
||||||
<item name="android:stateListAnimator">@null</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- Base toolbar style -->
|
<!-- Base toolbar style -->
|
||||||
|
|
|
@ -86,10 +86,10 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Auxio.TitleSmall" parent="TextAppearance.Material3.TitleSmall">
|
<style name="TextAppearance.Auxio.TitleSmall" parent="TextAppearance.Material3.TitleSmall">
|
||||||
<item name="fontFamily">@font/inter_regular</item>
|
<item name="fontFamily">@font/inter_semibold</item>
|
||||||
<item name="android:fontFamily">@font/inter_regular</item>
|
<item name="android:fontFamily">@font/inter_semibold</item>
|
||||||
<item name="android:textStyle">normal</item>
|
<item name="android:textStyle">bold</item>
|
||||||
<item name="android:letterSpacing">0.01</item>
|
<item name="android:letterSpacing">-0.003</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- Label styles are used for elements that can be interacted with. -->
|
<!-- Label styles are used for elements that can be interacted with. -->
|
||||||
|
|
Loading…
Reference in a new issue