mirror of
https://github.com/cmclark00/RetroMusicPlayer.git
synced 2025-05-19 16:45:20 +01:00
Added Collapsing appbar to library tabs with an option to switch back to simple appbar
This commit is contained in:
parent
ffd251ab62
commit
b2e1ab2128
12 changed files with 159 additions and 46 deletions
|
@ -0,0 +1,59 @@
|
|||
package code.name.monkey.retromusic.views
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import code.name.monkey.retromusic.databinding.CollapsingAppbarLayoutBinding
|
||||
import code.name.monkey.retromusic.databinding.SimpleAppbarLayoutBinding
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
|
||||
class TopAppBarLayout @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = -1,
|
||||
) : AppBarLayout(context, attrs, defStyleAttr) {
|
||||
private var simpleAppbarBinding: SimpleAppbarLayoutBinding? = null
|
||||
private var collapsingAppbarBinding: CollapsingAppbarLayoutBinding? = null
|
||||
|
||||
val mode: AppBarMode = PreferenceUtil.appBarMode
|
||||
|
||||
init {
|
||||
if (mode == AppBarMode.COLLAPSING) {
|
||||
collapsingAppbarBinding =
|
||||
CollapsingAppbarLayoutBinding.inflate(LayoutInflater.from(context), this, true)
|
||||
} else {
|
||||
simpleAppbarBinding =
|
||||
SimpleAppbarLayoutBinding.inflate(LayoutInflater.from(context), this, true)
|
||||
statusBarForeground = MaterialShapeDrawable.createWithElevationOverlay(context)
|
||||
}
|
||||
}
|
||||
|
||||
val toolbar: Toolbar
|
||||
get() = if (mode == AppBarMode.COLLAPSING) {
|
||||
collapsingAppbarBinding?.toolbar!!
|
||||
} else {
|
||||
simpleAppbarBinding?.toolbar!!
|
||||
}
|
||||
|
||||
var title: String
|
||||
get() = if (mode == AppBarMode.COLLAPSING) {
|
||||
collapsingAppbarBinding?.collapsingToolbarLayout?.title.toString()
|
||||
} else {
|
||||
simpleAppbarBinding?.appNameText?.text.toString()
|
||||
}
|
||||
set(value) {
|
||||
if (mode == AppBarMode.COLLAPSING) {
|
||||
collapsingAppbarBinding?.collapsingToolbarLayout?.title = value
|
||||
} else {
|
||||
simpleAppbarBinding?.appNameText?.text = value
|
||||
}
|
||||
}
|
||||
|
||||
enum class AppBarMode {
|
||||
COLLAPSING,
|
||||
SIMPLE
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue