Skip to content

Instantly share code, notes, and snippets.

View navczydev's full-sized avatar
💭
Mobile Dev

Nav Singh navczydev

💭
Mobile Dev
View GitHub Profile
// add this line to libs.versions.toml
// under [versions] section
emoji2-emojipicker = "1.4.0"
// under [libraries] section
androidx-emoji2-emojipicker = { group = "androidx.emoji2", name = "emoji2-emojipicker", version.ref = "emoji2-emojipicker" }
// app-level build.gradle
implementation(libs.androidx.emoji2.emojipicker)
// 1. It only takes 1 parameter - [MenuProvider]
/*
* We need to manually remove the MenuProvider by calling removeMenuProvider().
* */
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.main_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
fun processNullableName(name: String?) {
// Force unwrap !!
println("Name is: ${name!!}")
// Elvis operator ?:
println("Name is: ${name ?: "Kotlin"}")
// If statement
import UIKit
var name:String? = "Swift"
// force un-wrap
print("Name is \(name!)")
name = nil
// nil coalescing operator ??
print("Name is ??: \(name ?? "Swift")")
<com.google.android.material.materialswitch.MaterialSwitch
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_margin="24dp"
android:checked="true | false"
android:text="MaterialSwitch Checked"
app:layout_constraintTop_toBottomOf="@id/ms_1" />
<com.google.android.material.checkbox.MaterialCheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:text="MaterialCheckBox"
app:checkedState="unchecked | checked | indeterminate"
app:errorShown="true"
app:errorAccessibilityLabel="Error label for accessible goes here"
/>
AndroidView(factory = { context ->
MaterialCheckBox(context).apply {
text = "Checkbox from 1.7"
addOnCheckedStateChangedListener { checkBox, state ->
when (state) {
STATE_INDETERMINATE -> {
stateValue.value = STATE_INDETERMINATE
}
@Composable
fun MaterialSwitch170(updateCheckStateError: () -> Unit, resetCheckErrorState: () -> Unit) {
AndroidView(factory = { context ->
MaterialSwitch(context).apply {
text = context.resources.getString(R.string.switch_from_1_7)
setThumbIconResource(R.drawable.baseline_check_circle_24)
setOnCheckedChangeListener { _, isChecked ->
when (isChecked) {
true -> updateCheckStateError()
false -> {
rgChoices.setOnCheckedChangeListener { _, index ->
when {
index == R.id.rb_choice1 && rbChoice1.isChecked -> {
Log.d(TAG, "onCreate: First choice checked")
}
index == R.id.rb_choice2 && rbChoice2.isChecked -> {
Log.d(TAG, "onCreate: Second choice checked")
}
btnClearCheck.setOnClickListener {
// set the checkedChangeListener to null
rgChoices.setOnCheckedChangeListener(null)
rgChoices.clearCheck()
// re-set the checkedChangeListener