ui: make toolbar fix dedicated class
Make the toolbar spacing fixes a dedicated class. This resolves an issue on lollipop devices where the ripple would be clipped.
This commit is contained in:
parent
9647b53f78
commit
b1a8544b73
17 changed files with 78 additions and 78 deletions
|
@ -27,6 +27,7 @@ finished saving
|
||||||
- Fixed crash when search filter mode was changed
|
- Fixed crash when search filter mode was changed
|
||||||
- Fixed shuffle button appearing below playback bar on Android 10 and lower
|
- Fixed shuffle button appearing below playback bar on Android 10 and lower
|
||||||
- Fixed incorrect song being shown in the notification in some cases [#179]
|
- Fixed incorrect song being shown in the notification in some cases [#179]
|
||||||
|
- Fixed issue where toolbar will be clipped on Lollipop devices
|
||||||
|
|
||||||
#### What's Changed
|
#### What's Changed
|
||||||
- Reworked typography and iconography to be more aligned with material design guidelines
|
- Reworked typography and iconography to be more aligned with material design guidelines
|
||||||
|
|
50
app/src/main/java/org/oxycblt/auxio/ui/M3Toolbar.kt
Normal file
50
app/src/main/java/org/oxycblt/auxio/ui/M3Toolbar.kt
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 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 androidx.core.view.updatePaddingRelative
|
||||||
|
import com.google.android.material.appbar.MaterialToolbar
|
||||||
|
import org.oxycblt.auxio.R
|
||||||
|
import org.oxycblt.auxio.util.getDimenSizeSafe
|
||||||
|
|
||||||
|
/** [MaterialToolbar] that automatically fixes padding in order to align with the M3 specs. */
|
||||||
|
class M3Toolbar : MaterialToolbar {
|
||||||
|
constructor(context: Context) : super(context)
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
context: Context,
|
||||||
|
attrs: AttributeSet?,
|
||||||
|
@AttrRes defStyleAttr: Int
|
||||||
|
) : super(context, attrs, defStyleAttr)
|
||||||
|
init {
|
||||||
|
val tinySpacing = context.getDimenSizeSafe(R.dimen.spacing_tiny)
|
||||||
|
|
||||||
|
if (navigationIcon != null) {
|
||||||
|
updatePaddingRelative(start = tinySpacing)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (menu != null) {
|
||||||
|
updatePaddingRelative(end = tinySpacing)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,9 +5,9 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/playback_toolbar"
|
android:id="@+id/playback_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Down.Actions"
|
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:menu="@menu/menu_playback"
|
app:menu="@menu/menu_playback"
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/playback_toolbar"
|
android:id="@+id/playback_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Down.Actions"
|
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:menu="@menu/menu_playback"
|
app:menu="@menu/menu_playback"
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/playback_toolbar"
|
android:id="@+id/playback_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Down.Actions"
|
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:menu="@menu/menu_playback"
|
app:menu="@menu/menu_playback"
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
<?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"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/playback_toolbar"
|
android:id="@+id/playback_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Down.Actions"
|
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:menu="@menu/menu_playback"
|
app:menu="@menu/menu_playback"
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
style="@style/Widget.Auxio.AppBarLayout"
|
style="@style/Widget.Auxio.AppBarLayout"
|
||||||
app:liftOnScroll="true">
|
app:liftOnScroll="true">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/about_toolbar"
|
android:id="@+id/about_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon"
|
style="@style/Widget.Auxio.Toolbar.Icon"
|
||||||
app:title="@string/lbl_about" />
|
app:title="@string/lbl_about" />
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
app:liftOnScroll="true"
|
app:liftOnScroll="true"
|
||||||
app:liftOnScrollTargetViewId="@id/detail_recycler">
|
app:liftOnScrollTargetViewId="@id/detail_recycler">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/detail_toolbar"
|
android:id="@+id/detail_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Actions" />
|
style="@style/Widget.Auxio.Toolbar.Icon" />
|
||||||
|
|
||||||
</org.oxycblt.auxio.detail.DetailAppBarLayout>
|
</org.oxycblt.auxio.detail.DetailAppBarLayout>
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,10 @@
|
||||||
style="@style/Widget.Auxio.AppBarLayout"
|
style="@style/Widget.Auxio.AppBarLayout"
|
||||||
app:liftOnScroll="true">
|
app:liftOnScroll="true">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/home_toolbar"
|
android:id="@+id/home_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Actions"
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
app:layout_scrollFlags="scroll|enterAlways"
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
app:menu="@menu/menu_home"
|
app:menu="@menu/menu_home"
|
||||||
app:title="@string/info_app_name" />
|
app:title="@string/info_app_name" />
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/playback_toolbar"
|
android:id="@+id/playback_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Down.Actions"
|
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:menu="@menu/menu_playback"
|
app:menu="@menu/menu_playback"
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
app:liftOnScroll="true"
|
app:liftOnScroll="true"
|
||||||
app:liftOnScrollTargetViewId="@id/queue_recycler">
|
app:liftOnScrollTargetViewId="@id/queue_recycler">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/queue_toolbar"
|
android:id="@+id/queue_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
||||||
android:elevation="0dp"
|
android:elevation="0dp"
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
app:liftOnScroll="true"
|
app:liftOnScroll="true"
|
||||||
app:liftOnScrollTargetViewId="@id/search_recycler">
|
app:liftOnScrollTargetViewId="@id/search_recycler">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/search_toolbar"
|
android:id="@+id/search_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Actions"
|
style="@style/Widget.Auxio.Toolbar.Icon"
|
||||||
app:menu="@menu/menu_search">
|
app:menu="@menu/menu_search">
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
</com.google.android.material.appbar.MaterialToolbar>
|
</org.oxycblt.auxio.ui.M3Toolbar>
|
||||||
|
|
||||||
</org.oxycblt.auxio.ui.coordinator.EdgeAppBarLayout>
|
</org.oxycblt.auxio.ui.coordinator.EdgeAppBarLayout>
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
app:liftOnScroll="true">
|
app:liftOnScroll="true">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<org.oxycblt.auxio.ui.M3Toolbar
|
||||||
android:id="@+id/settings_toolbar"
|
android:id="@+id/settings_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon"
|
style="@style/Widget.Auxio.Toolbar.Icon"
|
||||||
app:title="@string/set_title" />
|
app:title="@string/set_title" />
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Actions" parent="Widget.Auxio.Toolbar.Base">
|
|
||||||
<item name="android:layout_marginEnd">@dimen/spacing_tiny_inv</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon" parent="Widget.Auxio.Toolbar.Base">
|
|
||||||
<!-- TODO: Margin clips ripples on lollipop, replace w/new impl -->
|
|
||||||
<item name="navigationIcon">@drawable/ic_back_24</item>
|
|
||||||
<item name="android:layout_marginStart">@dimen/spacing_small_inv</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon.Actions" parent="Widget.Auxio.Toolbar.Actions">
|
|
||||||
<item name="navigationIcon">@drawable/ic_back_24</item>
|
|
||||||
<item name="android:layout_marginStart">@dimen/spacing_small_inv</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon.Down" parent="Widget.Auxio.Toolbar.Base">
|
|
||||||
<item name="navigationIcon">@drawable/ic_down_24</item>
|
|
||||||
<item name="android:layout_marginStart">@dimen/spacing_small_inv</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon.Down.Actions" parent="Widget.Auxio.Toolbar.Actions">
|
|
||||||
<item name="navigationIcon">@drawable/ic_down_24</item>
|
|
||||||
<item name="android:layout_marginStart">@dimen/spacing_small_inv</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.RecyclerView.WithAdaptiveFab" parent="">
|
|
||||||
<item name="android:paddingBottom">@dimen/recycler_fab_space_large</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
|
|
@ -1,7 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<style name="Widget.Auxio.FloatingActionButton.Adaptive" parent="Widget.Material3.FloatingActionButton.Large.Primary">
|
<style name="Widget.Auxio.FloatingActionButton.Adaptive" parent="Widget.Material3.FloatingActionButton.Large.Primary">
|
||||||
<item name="fabSize">normal</item>
|
<item name="fabSize">normal</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Auxio.RecyclerView.WithAdaptiveFab" parent="">
|
||||||
|
<item name="android:paddingBottom">@dimen/recycler_fab_space_large</item>
|
||||||
|
</style>
|
||||||
</resources>
|
</resources>
|
|
@ -55,6 +55,4 @@
|
||||||
<dimen name="widget_height_min">110dp</dimen>
|
<dimen name="widget_height_min">110dp</dimen>
|
||||||
<dimen name="widget_width_def">@dimen/widget_width_min</dimen>
|
<dimen name="widget_width_def">@dimen/widget_width_min</dimen>
|
||||||
<dimen name="widget_height_def">@dimen/widget_height_min</dimen>
|
<dimen name="widget_height_def">@dimen/widget_height_min</dimen>
|
||||||
|
|
||||||
<dimen name="abc_action_bar_default_padding_start_material">4dp</dimen>
|
|
||||||
</resources>
|
</resources>
|
|
@ -13,30 +13,14 @@
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Actions" parent="Widget.Auxio.Toolbar.Base">
|
|
||||||
<!--
|
|
||||||
Material guidelines state that there should be 16dp end padding with actions,
|
|
||||||
but Toolbar only has 12dp. Fix that by adding a 4dp margin.
|
|
||||||
-->
|
|
||||||
<item name="android:layout_marginEnd">@dimen/spacing_tiny</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon" parent="Widget.Auxio.Toolbar.Base">
|
<style name="Widget.Auxio.Toolbar.Icon" parent="Widget.Auxio.Toolbar.Base">
|
||||||
<item name="navigationIcon">@drawable/ic_back_24</item>
|
<item name="navigationIcon">@drawable/ic_back_24</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon.Actions" parent="Widget.Auxio.Toolbar.Actions">
|
|
||||||
<item name="navigationIcon">@drawable/ic_back_24</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon.Down" parent="Widget.Auxio.Toolbar.Base">
|
<style name="Widget.Auxio.Toolbar.Icon.Down" parent="Widget.Auxio.Toolbar.Base">
|
||||||
<item name="navigationIcon">@drawable/ic_down_24</item>
|
<item name="navigationIcon">@drawable/ic_down_24</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Auxio.Toolbar.Icon.Down.Actions" parent="Widget.Auxio.Toolbar.Actions">
|
|
||||||
<item name="navigationIcon">@drawable/ic_down_24</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.Slider" parent="Widget.Material3.Slider">
|
<style name="Widget.Auxio.Slider" parent="Widget.Material3.Slider">
|
||||||
<item name="trackColorInactive">@color/sel_track</item>
|
<item name="trackColorInactive">@color/sel_track</item>
|
||||||
<item name="haloRadius">@dimen/spacing_medium</item>
|
<item name="haloRadius">@dimen/spacing_medium</item>
|
||||||
|
@ -220,13 +204,9 @@
|
||||||
|
|
||||||
<!-- BUTTON STYLES -->
|
<!-- BUTTON STYLES -->
|
||||||
|
|
||||||
<style name="Widget.Auxio.Button.Primary" parent="Widget.Material3.Button">
|
<style name="Widget.Auxio.Button.Primary" parent="Widget.Material3.Button" />
|
||||||
|
|
||||||
</style>
|
<style name="Widget.Auxio.Button.Secondary" parent="Widget.Material3.Button.OutlinedButton" />
|
||||||
|
|
||||||
<style name="Widget.Auxio.Button.Secondary" parent="Widget.Material3.Button.OutlinedButton">
|
|
||||||
<item name="strokeColor">?attr/colorOutline</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.Auxio.FloatingActionButton.PlayPause" parent="Widget.Material3.FloatingActionButton.Large.Secondary">
|
<style name="Widget.Auxio.FloatingActionButton.PlayPause" parent="Widget.Material3.FloatingActionButton.Large.Secondary">
|
||||||
<!--
|
<!--
|
||||||
|
|
Loading…
Reference in a new issue