mirror of
https://github.com/clangen/musikcube.git
synced 2025-03-14 04:18:36 +00:00
Bunch of annoying book keeping for title overrides and options menu
creation. Not sure it's worth all this complexity, but we'll see...
This commit is contained in:
parent
47953697ff
commit
fe10253ee5
@ -9,11 +9,11 @@ import io.casey.musikcube.remote.service.websocket.model.ICategoryValue
|
||||
import io.casey.musikcube.remote.ui.albums.constant.Album
|
||||
import io.casey.musikcube.remote.ui.albums.fragment.AlbumBrowseFragment
|
||||
import io.casey.musikcube.remote.ui.shared.activity.FragmentActivityWithTransport
|
||||
import io.casey.musikcube.remote.ui.shared.extension.EXTRA_ACTIVITY_TITLE
|
||||
import io.casey.musikcube.remote.ui.shared.extension.EXTRA_TITLE_OVERRIDE
|
||||
import io.casey.musikcube.remote.ui.shared.fragment.BaseFragment
|
||||
import io.casey.musikcube.remote.util.Strings
|
||||
|
||||
class AlbumBrowseActivity : FragmentActivityWithTransport() {
|
||||
class AlbumBrowseActivity: FragmentActivityWithTransport() {
|
||||
private val albums
|
||||
get() = content as AlbumBrowseFragment
|
||||
|
||||
@ -42,7 +42,7 @@ class AlbumBrowseActivity : FragmentActivityWithTransport() {
|
||||
fun getStartIntent(context: Context, categoryName: String, categoryId: Long, categoryValue: String): Intent =
|
||||
getStartIntent(context, categoryName, categoryId).apply {
|
||||
if (Strings.notEmpty(categoryValue)) {
|
||||
putExtra(EXTRA_ACTIVITY_TITLE, context.getString(R.string.albums_by_title, categoryValue))
|
||||
putExtra(EXTRA_TITLE_OVERRIDE, context.getString(R.string.albums_by_title, categoryValue))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15,10 +15,7 @@ import io.casey.musikcube.remote.ui.albums.constant.Album
|
||||
import io.casey.musikcube.remote.ui.shared.activity.IFilterable
|
||||
import io.casey.musikcube.remote.ui.shared.activity.ITitleProvider
|
||||
import io.casey.musikcube.remote.ui.shared.activity.ITransportObserver
|
||||
import io.casey.musikcube.remote.ui.shared.extension.getLayoutId
|
||||
import io.casey.musikcube.remote.ui.shared.extension.initSearchMenu
|
||||
import io.casey.musikcube.remote.ui.shared.extension.initToolbarIfNecessary
|
||||
import io.casey.musikcube.remote.ui.shared.extension.setupDefaultRecyclerView
|
||||
import io.casey.musikcube.remote.ui.shared.extension.*
|
||||
import io.casey.musikcube.remote.ui.shared.fragment.BaseFragment
|
||||
import io.casey.musikcube.remote.ui.shared.mixin.DataProviderMixin
|
||||
import io.casey.musikcube.remote.ui.shared.mixin.ItemContextMenuMixin
|
||||
@ -38,7 +35,7 @@ class AlbumBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITranspo
|
||||
private lateinit var emptyView: EmptyListView
|
||||
|
||||
override val title: String
|
||||
get() = app.getString(R.string.albums_title)
|
||||
get() = getTitleOverride(app.getString(R.string.albums_title))
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
component.inject(this)
|
||||
@ -66,7 +63,7 @@ class AlbumBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITranspo
|
||||
emptyView.emptyMessage = getString(R.string.empty_no_items_format, getString(R.string.browse_type_albums))
|
||||
emptyView.alternateView = recyclerView
|
||||
|
||||
initToolbarIfNecessary(this)
|
||||
initToolbarIfNecessary(appCompatActivity, this)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
@ -47,9 +47,9 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
override val title: String
|
||||
get() {
|
||||
Category.NAME_TO_TITLE[category]?.let {
|
||||
return getString(it)
|
||||
return getTitleOverride(getString(it))
|
||||
}
|
||||
return Category.toDisplayString(app, category)
|
||||
return getTitleOverride(Category.toDisplayString(app, category))
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@ -82,7 +82,7 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
emptyView.alternateView = recyclerView
|
||||
|
||||
setupDefaultRecyclerView(recyclerView, adapter)
|
||||
initToolbarIfNecessary(this)
|
||||
initToolbarIfNecessary(appCompatActivity, this)
|
||||
}
|
||||
|
||||
override fun onFabPress(fab: FloatingActionButton) {
|
||||
@ -187,10 +187,10 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
}
|
||||
|
||||
private fun navigateToAlbums(entry: ICategoryValue) =
|
||||
startActivity(AlbumBrowseActivity.getStartIntent(appCompatActivity, category, entry))
|
||||
startActivity(AlbumBrowseActivity.getStartIntent(appCompatActivity, category, entry))
|
||||
|
||||
private fun navigateToTracks(entry: ICategoryValue) =
|
||||
startActivity(TrackListActivity.getStartIntent(appCompatActivity, category, entry.id, entry.value))
|
||||
startActivity(TrackListActivity.getStartIntent(appCompatActivity, category, entry.id, entry.value))
|
||||
|
||||
private fun navigateToSelect(id: Long, name: String) =
|
||||
appCompatActivity.run {
|
||||
@ -230,7 +230,7 @@ class CategoryBrowseFragment: BaseFragment(), IFilterable, ITitleProvider, ITran
|
||||
val format = Category.NAME_TO_RELATED_TITLE[category]
|
||||
when (format) {
|
||||
null -> throw IllegalArgumentException("unknown category $category")
|
||||
else -> putString(EXTRA_ACTIVITY_TITLE, context.getString(format, predicateValue))
|
||||
else -> putString(EXTRA_TITLE_OVERRIDE, context.getString(format, predicateValue))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,9 +5,7 @@ import android.support.design.widget.FloatingActionButton
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import io.casey.musikcube.remote.R
|
||||
import io.casey.musikcube.remote.ui.shared.extension.enableUpNavigation
|
||||
import io.casey.musikcube.remote.ui.shared.extension.findFragment
|
||||
import io.casey.musikcube.remote.ui.shared.extension.setTitleFromIntent
|
||||
import io.casey.musikcube.remote.ui.shared.extension.*
|
||||
import io.casey.musikcube.remote.ui.shared.fragment.BaseFragment
|
||||
import io.casey.musikcube.remote.ui.shared.fragment.TransportFragment
|
||||
|
||||
@ -91,6 +89,8 @@ abstract class FragmentActivityWithTransport: BaseActivity(), IFilterable {
|
||||
|
||||
private fun createFragments() {
|
||||
content = createContentFragment()
|
||||
.withToolbar()
|
||||
.withTitleOverride(this)
|
||||
transport = TransportFragment.create()
|
||||
supportFragmentManager
|
||||
.beginTransaction()
|
||||
|
@ -30,7 +30,7 @@ import io.casey.musikcube.remote.ui.shared.fragment.BaseFragment
|
||||
import io.casey.musikcube.remote.ui.shared.fragment.TransportFragment
|
||||
import io.casey.musikcube.remote.util.Strings
|
||||
|
||||
const val EXTRA_ACTIVITY_TITLE = "extra_title"
|
||||
const val EXTRA_TITLE_OVERRIDE = "extra_title_override"
|
||||
const val EXTRA_WITH_TOOLBAR = "extra_with_toolbar"
|
||||
const val EXTRA_WITH_FRAGMENT_TOOLBAR = "extra_with_fragment_toolbar"
|
||||
|
||||
@ -94,10 +94,18 @@ fun AppCompatActivity.setTitleFromIntent(defaultId: Int) =
|
||||
this.setTitleFromIntent(getString(defaultId))
|
||||
|
||||
fun AppCompatActivity.setTitleFromIntent(defaultTitle: String) {
|
||||
val title = this.intent.getStringExtra(EXTRA_ACTIVITY_TITLE)
|
||||
val title = this.intent.getStringExtra(EXTRA_TITLE_OVERRIDE)
|
||||
this.title = if (Strings.notEmpty(title)) title else defaultTitle
|
||||
}
|
||||
|
||||
fun BaseFragment.getTitleOverride(defaultId: Int): String =
|
||||
this.getTitleOverride(getString(defaultId))
|
||||
|
||||
fun BaseFragment.getTitleOverride(defaultTitle: String): String {
|
||||
val title = this.extras.getString(EXTRA_TITLE_OVERRIDE) ?: ""
|
||||
return if (Strings.notEmpty(title)) title else defaultTitle
|
||||
}
|
||||
|
||||
fun AppCompatActivity.initSearchMenu(menu: Menu, filterable: IFilterable?): Boolean {
|
||||
this.menuInflater.inflate(R.menu.search_menu, menu)
|
||||
|
||||
@ -134,12 +142,12 @@ fun AppCompatActivity.initSearchMenu(menu: Menu, filterable: IFilterable?): Bool
|
||||
fun Fragment.initSearchMenu(menu: Menu, filterable: IFilterable?): Boolean =
|
||||
(activity as AppCompatActivity).initSearchMenu(menu, filterable)
|
||||
|
||||
fun Toolbar.initSearchMenu(filterable: IFilterable?): Boolean =
|
||||
(context as AppCompatActivity).initSearchMenu(this.menu, filterable)
|
||||
fun Toolbar.initSearchMenu(activity: AppCompatActivity, filterable: IFilterable?): Boolean =
|
||||
activity.initSearchMenu(this.menu, filterable)
|
||||
|
||||
fun Toolbar.setTitleFromIntent(defaultTitle: String) {
|
||||
val extras = (context as? AppCompatActivity)?.intent?.extras ?: Bundle()
|
||||
val title = extras.getString(EXTRA_ACTIVITY_TITLE)
|
||||
val title = extras.getString(EXTRA_TITLE_OVERRIDE)
|
||||
this.title = if (Strings.notEmpty(title)) title else defaultTitle
|
||||
}
|
||||
|
||||
@ -295,11 +303,26 @@ inline fun <reified T: BaseFragment> T.withToolbar(): T {
|
||||
return this
|
||||
}
|
||||
|
||||
fun BaseFragment.initToolbarIfNecessary(view: View) {
|
||||
inline fun <reified T: BaseFragment> T.withTitleOverride(activity: AppCompatActivity): T {
|
||||
activity.intent?.getStringExtra(EXTRA_TITLE_OVERRIDE)?.let {
|
||||
if (it.isNotEmpty()) {
|
||||
if (this.arguments == null) {
|
||||
this.arguments = Bundle()
|
||||
}
|
||||
this.extras.putString(EXTRA_TITLE_OVERRIDE, it)
|
||||
}
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
fun BaseFragment.initToolbarIfNecessary(activity: AppCompatActivity, view: View, searchMenu: Boolean = true) {
|
||||
view.findViewById<Toolbar>(R.id.toolbar)?.let {
|
||||
it.navigationIcon = appCompatActivity.getDrawable(R.drawable.ic_back)
|
||||
it.setNavigationOnClickListener { appCompatActivity.finish() }
|
||||
it.initSearchMenu(this as? IFilterable)
|
||||
if (searchMenu) {
|
||||
it.initSearchMenu(activity, this as? IFilterable)
|
||||
}
|
||||
if (this is IMenuProvider) {
|
||||
this.createOptionsMenu(it.menu)
|
||||
it.setOnMenuItemClickListener {
|
||||
@ -311,8 +334,8 @@ fun BaseFragment.initToolbarIfNecessary(view: View) {
|
||||
|
||||
fun BaseFragment.getLayoutId(): Int =
|
||||
when (this.extras.getBoolean(EXTRA_WITH_TOOLBAR)) {
|
||||
true -> R.layout.recycler_view_activity
|
||||
else -> R.layout.recycler_view_fragment
|
||||
true -> R.layout.recycler_view_with_empty_state_and_toolbar_and_fab
|
||||
else -> R.layout.recycler_view_with_empty_state
|
||||
}
|
||||
|
||||
fun Intent.withFragmentToolbar(): Intent {
|
||||
|
@ -28,7 +28,7 @@ class TransportFragment: BaseFragment() {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
|
||||
{
|
||||
this.rootView = inflater.inflate(R.layout.fragment_transport, container, false)
|
||||
this.rootView = inflater.inflate(R.layout.transport_fragment, container, false)
|
||||
bindEventHandlers()
|
||||
rebindUi()
|
||||
return this.rootView
|
||||
|
@ -7,12 +7,11 @@ import android.view.MenuItem
|
||||
import io.casey.musikcube.remote.R
|
||||
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata
|
||||
import io.casey.musikcube.remote.ui.shared.activity.FragmentActivityWithTransport
|
||||
import io.casey.musikcube.remote.ui.shared.activity.IFilterable
|
||||
import io.casey.musikcube.remote.ui.shared.fragment.BaseFragment
|
||||
import io.casey.musikcube.remote.ui.tracks.constant.Track
|
||||
import io.casey.musikcube.remote.ui.tracks.fragment.TrackListFragment
|
||||
|
||||
class TrackListActivity : FragmentActivityWithTransport(), IFilterable {
|
||||
class TrackListActivity: FragmentActivityWithTransport() {
|
||||
private val tracks
|
||||
get() = content as TrackListFragment
|
||||
|
||||
|
@ -105,7 +105,7 @@ class TrackListFragment: BaseFragment(), IFilterable, ITitleProvider, ITransport
|
||||
adapter = TrackListAdapter(tracks, eventListener, playback, prefs)
|
||||
|
||||
setupDefaultRecyclerView(recyclerView, adapter)
|
||||
initToolbarIfNecessary(this)
|
||||
initToolbarIfNecessary(appCompatActivity, this, searchMenu = false)
|
||||
|
||||
emptyView = findViewById(R.id.empty_list_view)
|
||||
|
||||
@ -118,8 +118,27 @@ class TrackListFragment: BaseFragment(), IFilterable, ITitleProvider, ITransport
|
||||
tracks.setOnMetadataLoadedListener(slidingWindowListener)
|
||||
}
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (requestCode == Track.RequestCode.EDIT_PLAYLIST && resultCode == AppCompatActivity.RESULT_OK && data != null) {
|
||||
val playlistName = data.getStringExtra(EditPlaylistActivity.EXTRA_PLAYLIST_NAME) ?: ""
|
||||
val playlistId = data.getLongExtra(EditPlaylistActivity.EXTRA_PLAYLIST_ID, -1L)
|
||||
|
||||
if (categoryType != Metadata.Category.PLAYLISTS || playlistId != this.categoryId) {
|
||||
showSnackbar(
|
||||
appCompatActivity.findViewById(android.R.id.content),
|
||||
getString(R.string.playlist_edit_save_success, playlistName),
|
||||
buttonText = getString(R.string.button_view),
|
||||
buttonCb = {
|
||||
startActivity(TrackListActivity.getStartIntent(
|
||||
appCompatActivity, Metadata.Category.PLAYLISTS, playlistId, playlistName))
|
||||
})
|
||||
}
|
||||
}
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
}
|
||||
|
||||
override val title: String
|
||||
get() = getString(titleId)
|
||||
get() = getTitleOverride(getString(titleId))
|
||||
|
||||
override fun setFilter(filter: String) {
|
||||
lastFilter = filter
|
||||
@ -148,25 +167,6 @@ class TrackListFragment: BaseFragment(), IFilterable, ITitleProvider, ITransport
|
||||
else -> false
|
||||
}
|
||||
|
||||
fun activityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (requestCode == Track.RequestCode.EDIT_PLAYLIST && resultCode == AppCompatActivity.RESULT_OK && data != null) {
|
||||
val playlistName = data.getStringExtra(EditPlaylistActivity.EXTRA_PLAYLIST_NAME) ?: ""
|
||||
val playlistId = data.getLongExtra(EditPlaylistActivity.EXTRA_PLAYLIST_ID, -1L)
|
||||
|
||||
if (categoryType != Metadata.Category.PLAYLISTS || playlistId != this.categoryId) {
|
||||
showSnackbar(
|
||||
appCompatActivity.findViewById(android.R.id.content),
|
||||
getString(R.string.playlist_edit_save_success, playlistName),
|
||||
buttonText = getString(R.string.button_view),
|
||||
buttonCb = {
|
||||
startActivity(TrackListActivity.getStartIntent(
|
||||
appCompatActivity, Metadata.Category.PLAYLISTS, playlistId, playlistName))
|
||||
})
|
||||
}
|
||||
}
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
}
|
||||
|
||||
override fun onTransportChanged() {
|
||||
adapter.notifyDataSetChanged()
|
||||
}
|
||||
@ -282,7 +282,7 @@ class TrackListFragment: BaseFragment(), IFilterable, ITitleProvider, ITransport
|
||||
putString(Track.Extra.CATEGORY_VALUE, categoryValue)
|
||||
if (Strings.notEmpty(categoryValue)) {
|
||||
putString(
|
||||
EXTRA_ACTIVITY_TITLE,
|
||||
EXTRA_TITLE_OVERRIDE,
|
||||
context.getString(R.string.songs_from_category, categoryValue))
|
||||
}
|
||||
}
|
||||
|
@ -1,40 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:layout_weight="1"
|
||||
<FrameLayout
|
||||
android:id="@+id/content_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp">
|
||||
|
||||
<include layout="@layout/toolbar" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/content_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/fab_padding"
|
||||
android:src="@drawable/ic_fab_add"
|
||||
android:scaleType="center"
|
||||
android:elevation="6dp"
|
||||
android:visibility="gone"
|
||||
app:layout_anchor="@id/content_container"
|
||||
app:layout_anchorGravity="bottom|right"
|
||||
app:backgroundTint="@color/color_primary"
|
||||
app:fabSize="mini"
|
||||
app:rippleColor="?colorAccent"/>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/transport_container"
|
||||
|
@ -30,20 +30,9 @@
|
||||
android:visibility="invisible"/>
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
style="@style/FAB"
|
||||
android:id="@+id/fab"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/fab_padding"
|
||||
android:src="@drawable/ic_fab_add"
|
||||
android:scaleType="center"
|
||||
android:elevation="6dp"
|
||||
android:visibility="gone"
|
||||
app:layout_anchor="@id/recycler_view"
|
||||
app:layout_anchorGravity="bottom|right"
|
||||
app:backgroundTint="@color/color_primary"
|
||||
app:fabSize="mini"
|
||||
app:rippleColor="?colorAccent"/>
|
||||
app:layout_anchor="@id/recycler_view" />
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
||||
|
@ -3,16 +3,14 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
|
||||
style="@style/RecyclerView"
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:fastScrollAutoHide="true"
|
||||
app:fastScrollAutoHideDelay="1500"
|
||||
app:fastScrollThumbInactiveColor="@color/color_primary_dark"
|
||||
app:fastScrollThumbColor="@color/color_accent" />
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<io.casey.musikcube.remote.ui.shared.view.EmptyListView
|
||||
android:id="@+id/empty_list_view"
|
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent">
|
||||
|
||||
<include layout="@layout/toolbar" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/content_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
|
||||
style="@style/RecyclerView"
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<io.casey.musikcube.remote.ui.shared.view.EmptyListView
|
||||
android:id="@+id/empty_list_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="invisible" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
style="@style/FAB"
|
||||
android:id="@+id/fab"
|
||||
app:layout_anchor="@id/content_container" />
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
@ -46,7 +46,6 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<android.support.v4.widget.Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="2dp"/>
|
||||
@ -88,5 +87,4 @@
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
@ -87,4 +87,26 @@
|
||||
<item name="android:shadowRadius">3</item>
|
||||
</style>
|
||||
|
||||
<style name="FAB">
|
||||
<item name="android:layout_gravity">bottom|right</item>
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_margin">@dimen/fab_padding</item>
|
||||
<item name="android:src">@drawable/ic_fab_add</item>
|
||||
<item name="android:scaleType">center</item>
|
||||
<item name="android:elevation">6dp</item>
|
||||
<item name="android:visibility">gone</item>
|
||||
<item name="layout_anchorGravity">bottom|right</item>
|
||||
<item name="backgroundTint">@color/color_primary</item>
|
||||
<item name="fabSize">mini</item>
|
||||
<item name="rippleColor">?colorAccent</item>
|
||||
</style>
|
||||
|
||||
<style name="RecyclerView">
|
||||
<item name="fastScrollAutoHide">true</item>
|
||||
<item name="fastScrollAutoHideDelay">1500</item>
|
||||
<item name="fastScrollThumbInactiveColor">@color/color_primary_dark</item>
|
||||
<item name="fastScrollThumbColor">@color/color_accent</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user