Skip to content

Views

Extensions function and properties on Views.

Supported platforms: Android.

Setup

If you want to use this dependency without using one of the fun packs, you can use Splitties.views, provided you have refreshVersions added to the project.

For reference, the maven coordinates of this module are com.louiscad.splitties:splitties-views.

Content

This split includes extensions on view related classes. They are helpful when dealing with views programmatically.

Depends on AndroidX core KTX

Android core KTX already bundles its share of useful extensions for Views. For example, it includes View visibility extension properties like isVisible. To avoid duplication, Splitties deprecated symbols made redundant by Android core KTX, and included the dependency transitively instead.

View background properties

bg is an alias to the background property for View, but works below API 16, usingsetBackgroundDrawable(…)`.

backgroundColor allows to set the background color of a View using property syntax.

ImageView properties

imageResource allows to set the image of an ImageView from a resource id using property syntax.

imageDrawable allows to get, set or clear the image of an ImageView with a Drawable? using property syntax.

imageBitmap allows to set the image of an ImageView from a BitMap using property syntax.

Layout direction properties

isLtr extension property for View is true on API 16 and lower, or when the layout direction is left to right (like in English).

isRtl is !isLtr. Would be true on an API 17+ device setup in Arabic or another RTL language, or when the device is forced to RTL in developer options.

View padding properties

The following extension properties allow to set the padding of a View using property syntax:

padding
horizontalPadding
verticalPadding
topPadding
bottomPadding

You can also use the setPaddingDp extension function that offers default parameter values.

EditText extensions

type allows to set the input type in a typesafe and more readable way using the InputType inline class (lots of "type" occurrences in this sentence).

TextView extensions

textResource allows to set the text of a TextView from a string resource id using property syntax.

textColorResource allows to set the color of the text of a TextView from a color resource id using property syntax.

textAppearance allows to set the text appearance of a TextView from a text appearance style resource id using property syntax, even below API 23.

lines allows to set the exact number of lines of a TextView using property syntax.

centerText() sets gravity to center and center aligns the text. alignTextToStart() sets gravity to start and start aligns the text. alignTextToEnd() sets gravity to end and end aligns the text.

setCompoundDrawables(…) takes Drawable? parameters for start, top, end and bottom which all default to null, plus an intrinsicBounds parameter that defaults to false.

setCompoundDrawables(…) has an overload which takes drawable resource ids that default to 0 (no drawable) but no intrinsicBounds parameter (as it is implicitly true).

clearCompoundDrawables() clears all compound drawables the TextView has.

Click

onClick { … } extension method for View avoids it shadowing if you have other lambdas, while also being more expressive than setOnClickListener { … }.

onLongClick { … } is similar to onClick { … }, but also removes the need to have an extra line in the lambda to return true or false.

LayoutInflater

LayoutInflater, Context and ViewGroup have an inflate extension function that make inflating xml easy thanks to type parameter.

There's also an inflateAndAttach extension function for ViewGroup.

Gravity flags aliases

Using Gravity constants on Android is a bit verbose. To alleviate this small issue, this split provides extension properties for View which start with gravity. They cover most use cases and play well with autocomplete.

Example:

Without Splitties: Gravity.START or Gravity.CENTER_VERTICAL

With Splitties: gravityStartCenter

List of supported Gravity flags:

gravityCenter
gravityCenterVertical
gravityCenterHorizontal
gravityVerticalCenter
gravityHorizontalCenter
gravityStart
gravityTop
gravityEnd
gravityBottom
gravityStartBottom
gravityStartTop
gravityEndBottom
gravityEndTop
gravityBottomStart (alias to gravityStartBottom)
gravityTopStart (alias to gravityStartTop)
gravityBottomEnd (alias to gravityEndBottom)
gravityTopEnd (alias to gravityEndTop)
gravityStartCenter
gravityEndCenter
gravityTopCenter
gravityBottomCenter

Other

The generateViewId() top level function is a backwards compatible and more efficient version of View.generateViewId() that was introduced in Android API 17.

The assignAndGetGeneratedId() extension function for View calls generateViewId() assigns it to the view and returns new generated id.

The existingOrNewId extension property for View calls assignAndGetGeneratedId() if the view has no id (0/View.NO_ID), and returns the id of the View, existing or just generated.