Skip to content

Instantly share code, notes, and snippets.

@shekibobo
shekibobo / README.md
Last active March 2, 2020 11:04
Android: Base Styles for Button (not provided by AppCompat)

How to create custom button styles using Android's AppCompat-v7:21

Introduction

AppCompat is an Android support library to provide backwards-compatible functionality for Material design patterns. It currently comes bundled with a set of styles in the Theme.AppCompat and Widget.AppCompat namespaces. However, there is a critical component missing which I would have thought essential to provide the a default from which we could inherit our styles: Widget.AppCompat.Button. Sure, there's Widget.AppCompat.Light.ActionButton, but that doesn't actually inherit from Widget.ActionButton, which does not inherit from Widget.Button, so we might get some unexpected behavior using that as our base button style, mainly because Widget.ActionButton strictly belongs in the ActionBar.

So, if we want to have a decently normal default button style related to AppCompat, we need to make it ourselves. Let's start by digging into the Android SDK to see how it's doing default styles.

Digging In

@sczerwinski
sczerwinski / WeakReferenceProperty.kt
Created September 14, 2017 09:10
Weak reference property delegate in Kotlin
class WeakReferenceProperty<T>(private val creator: () -> T) {
private var value: WeakReference<T> =
WeakReference(creator())
operator fun getValue(thisRef: Any?, property: KProperty<*>): T =
value.get() ?: creator().also { value = WeakReference(it) }
}
private fun <T> weak(creator: () -> T) =
@Arham4
Arham4 / data.yaml
Last active September 20, 2023 01:26
Easy Jackson YAML Parsing with Kotlin
username: "Test"
password: "123456"