Skip to content

Instantly share code, notes, and snippets.

@sargunv
Forked from mgranberry/DesignSupport.kt
Last active February 13, 2017 14:10
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sargunv/418c0fd98eb765fa9aca to your computer and use it in GitHub Desktop.
Save sargunv/418c0fd98eb765fa9aca to your computer and use it in GitHub Desktop.
A set of Anko-compatible extensions for Google's support libraries
import android.app.Activity
import android.support.design.widget.*
import android.support.v4.app.Fragment
import android.support.v4.view.PagerTabStrip
import android.support.v4.view.PagerTitleStrip
import android.support.v4.view.ViewPager
import android.support.v4.widget.DrawerLayout
import android.support.v4.widget.SlidingPaneLayout
import android.support.v7.widget.CardView
import android.support.v7.widget.GridLayout
import android.support.v7.widget.RecyclerView
import android.support.v7.widget.Toolbar
import android.view.View
import android.view.ViewManager
import org.jetbrains.anko.__dslAddView
import org.jetbrains.anko.find
/* Android v4 support library */
fun ViewManager.viewPager(init: ViewPager.() -> Unit = {}) =
__dslAddView({ ViewPager(it) }, init, this)
fun ViewManager.pagerTitleStrip(init: PagerTitleStrip.() -> Unit = {}) =
__dslAddView({ PagerTitleStrip(it) }, init, this)
fun ViewManager.pagerTabStrip(init: PagerTabStrip.() -> Unit = {}) =
__dslAddView({ PagerTabStrip(it) }, init, this)
fun ViewManager.drawerLayout(init: DrawerLayout.() -> Unit = {}) =
__dslAddView({ DrawerLayout(it) }, init, this)
fun ViewManager.slidingPaneLayout(init: SlidingPaneLayout.() -> Unit = {}) =
__dslAddView({ SlidingPaneLayout(it) }, init, this)
fun ViewManager.nestedScrollView(init: NestedScrollView.() -> Unit = {}) =
__dslAddView({ NestedScrollView(it) }, init, this)
/* Android v7 support libraries */
fun ViewManager.toolbar(init: Toolbar.() -> Unit = {}) =
__dslAddView({ Toolbar(it) }, init, this)
fun ViewManager.gridLayout(init: GridLayout.() -> Unit = {}) =
__dslAddView({ GridLayout(it) }, init, this)
fun ViewManager.cardView(init: CardView.() -> Unit = {}) =
__dslAddView({ CardView(it) }, init, this)
fun ViewManager.recyclerView(init: RecyclerView.() -> Unit = {}) =
__dslAddView({ RecyclerView(it) }, init, this)
/* Android design support library */
fun ViewManager.appBarLayout(init: AppBarLayout.() -> Unit = {}) =
__dslAddView({ AppBarLayout(it) }, init, this)
fun ViewManager.collapsingToolbarLayout(init: CollapsingToolbarLayout.() -> Unit = {}) =
__dslAddView({ CollapsingToolbarLayout(it) }, init, this)
fun ViewManager.coordinatorLayout(init: CoordinatorLayout.() -> Unit = {}) =
__dslAddView({ CoordinatorLayout(it) }, init, this)
fun ViewManager.floatingActionButton(init: FloatingActionButton.() -> Unit = {}) =
__dslAddView({ FloatingActionButton(it) }, init, this)
fun ViewManager.navigationView(init: NavigationView.() -> Unit = {}) =
__dslAddView({ NavigationView(it) }, init, this)
fun ViewManager.tabLayout(init: TabLayout.() -> Unit = {}) =
__dslAddView({ TabLayout(it) }, init, this)
fun ViewManager.textInputLayout(init: TextInputLayout.() -> Unit = {}) =
__dslAddView({ TextInputLayout(it) }, init, this)
fun View.snackbar(text: CharSequence, duration: Int = Snackbar.LENGTH_SHORT, init: Snackbar.() -> Unit = {}): Snackbar {
val snack = Snackbar.make(this, text, duration)
snack.init()
snack.show()
return snack
}
fun View.snackbar(text: Int, duration: Int = Snackbar.LENGTH_SHORT, init: Snackbar.() -> Unit = {}): Snackbar {
val snack = Snackbar.make(this, text, duration)
snack.init()
snack.show()
return snack
}
fun Fragment.snackbar(text: CharSequence, duration: Int = Snackbar.LENGTH_SHORT, init: Snackbar.() -> Unit = {}): Snackbar =
getView().snackbar(text, duration, init)
fun Fragment.snackbar(text: Int, duration: Int = Snackbar.LENGTH_SHORT, init: Snackbar.() -> Unit = {}): Snackbar =
getView().snackbar(text, duration, init)
fun Activity.snackbar(text: CharSequence, duration: Int = Snackbar.LENGTH_SHORT, init: Snackbar.() -> Unit = {}): Snackbar =
find<View>(android.R.id.content).snackbar(text, duration, init)
fun Activity.snackbar(text: Int, duration: Int = Snackbar.LENGTH_SHORT, init: Snackbar.() -> Unit = {}): Snackbar =
find<View>(android.R.id.content).snackbar(text, duration, init)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment