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 shuffle button appearing below playback bar on Android 10 and lower
|
||||
- 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
|
||||
- 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_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
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_constraintTop_toTopOf="parent"
|
||||
app:menu="@menu/menu_playback"
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
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_constraintTop_toTopOf="parent"
|
||||
app:menu="@menu/menu_playback"
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
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_constraintTop_toTopOf="parent"
|
||||
app:menu="@menu/menu_playback"
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
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_constraintTop_toTopOf="parent"
|
||||
app:menu="@menu/menu_playback"
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
style="@style/Widget.Auxio.AppBarLayout"
|
||||
app:liftOnScroll="true">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
android:id="@+id/about_toolbar"
|
||||
style="@style/Widget.Auxio.Toolbar.Icon"
|
||||
app:title="@string/lbl_about" />
|
||||
|
|
|
@ -15,9 +15,9 @@
|
|||
app:liftOnScroll="true"
|
||||
app:liftOnScrollTargetViewId="@id/detail_recycler">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
android:id="@+id/detail_toolbar"
|
||||
style="@style/Widget.Auxio.Toolbar.Icon.Actions" />
|
||||
style="@style/Widget.Auxio.Toolbar.Icon" />
|
||||
|
||||
</org.oxycblt.auxio.detail.DetailAppBarLayout>
|
||||
|
||||
|
|
|
@ -11,9 +11,10 @@
|
|||
style="@style/Widget.Auxio.AppBarLayout"
|
||||
app:liftOnScroll="true">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
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:menu="@menu/menu_home"
|
||||
app:title="@string/info_app_name" />
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
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_constraintTop_toTopOf="parent"
|
||||
app:menu="@menu/menu_playback"
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
app:liftOnScroll="true"
|
||||
app:liftOnScrollTargetViewId="@id/queue_recycler">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
android:id="@+id/queue_toolbar"
|
||||
style="@style/Widget.Auxio.Toolbar.Icon.Down"
|
||||
android:elevation="0dp"
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
app:liftOnScroll="true"
|
||||
app:liftOnScrollTargetViewId="@id/search_recycler">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
android:id="@+id/search_toolbar"
|
||||
style="@style/Widget.Auxio.Toolbar.Icon.Actions"
|
||||
style="@style/Widget.Auxio.Toolbar.Icon"
|
||||
app:menu="@menu/menu_search">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
|
@ -38,7 +38,7 @@
|
|||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
</org.oxycblt.auxio.ui.M3Toolbar>
|
||||
|
||||
</org.oxycblt.auxio.ui.coordinator.EdgeAppBarLayout>
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
android:focusable="true"
|
||||
app:liftOnScroll="true">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
<org.oxycblt.auxio.ui.M3Toolbar
|
||||
android:id="@+id/settings_toolbar"
|
||||
style="@style/Widget.Auxio.Toolbar.Icon"
|
||||
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"?>
|
||||
<resources>
|
||||
|
||||
<style name="Widget.Auxio.FloatingActionButton.Adaptive" parent="Widget.Material3.FloatingActionButton.Large.Primary">
|
||||
<item name="fabSize">normal</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Auxio.RecyclerView.WithAdaptiveFab" parent="">
|
||||
<item name="android:paddingBottom">@dimen/recycler_fab_space_large</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -55,6 +55,4 @@
|
|||
<dimen name="widget_height_min">110dp</dimen>
|
||||
<dimen name="widget_width_def">@dimen/widget_width_min</dimen>
|
||||
<dimen name="widget_height_def">@dimen/widget_height_min</dimen>
|
||||
|
||||
<dimen name="abc_action_bar_default_padding_start_material">4dp</dimen>
|
||||
</resources>
|
|
@ -13,30 +13,14 @@
|
|||
<item name="android:layout_height">wrap_content</item>
|
||||
</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">
|
||||
<item name="navigationIcon">@drawable/ic_back_24</item>
|
||||
</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">
|
||||
<item name="navigationIcon">@drawable/ic_down_24</item>
|
||||
</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">
|
||||
<item name="trackColorInactive">@color/sel_track</item>
|
||||
<item name="haloRadius">@dimen/spacing_medium</item>
|
||||
|
@ -220,13 +204,9 @@
|
|||
|
||||
<!-- 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">
|
||||
<item name="strokeColor">?attr/colorOutline</item>
|
||||
</style>
|
||||
<style name="Widget.Auxio.Button.Secondary" parent="Widget.Material3.Button.OutlinedButton" />
|
||||
|
||||
<style name="Widget.Auxio.FloatingActionButton.PlayPause" parent="Widget.Material3.FloatingActionButton.Large.Secondary">
|
||||
<!--
|
||||
|
|
Loading…
Reference in a new issue