MainActivity.kt
package com.cfsuman.kotlintutorials
import android.content.Context
import android.os.Bundle
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// get the widgets reference from XML layout
val textView = findViewById<TextView>(R.id.textView)
// Put some dummy text to the text view
// using extension function
textView.dummyText()
// Set a click listener for text view widget
textView.setOnClickListener{
// Display toast message using extension function
toast("Toast using extension function")
//toast("TextView Width : ${it.width} pixels
// and Height: ${it.height} pixels")
}
// Under line text view text using extension function
// This extension function exist in a separate file
textView.underline()
// Add shadow effect to text view text
//text_view.shadow()
}
// Extension function which written in calling file
private fun Context.toast(
message: String,
duration: Int = Toast.LENGTH_SHORT
){
// Extend the Context object to show a Toast easily
Toast.makeText(this,message,Toast.LENGTH_SHORT).show()
}
}
MyExtensionFunctions.kt
package com.cfsuman.kotlintutorials
import android.graphics.Color
import android.graphics.Paint
import android.widget.TextView
// Extension function to extend TextView functionality
// Function make text view text to underlined
fun TextView.underline(){
/*
Keyword 'this' represent the object/widget which functionality
we want to extend. In this function 'this' represent the 'TextView'
*/
this.paintFlags = this.paintFlags or Paint.UNDERLINE_TEXT_FLAG;
}
// Get the text view width in pixels
fun TextView.width():Int{
this.measure(0,0)
return this.measuredWidth
}
// Get the text view height in pixels
fun TextView.height():Int{
this.measure(0,0)
return this.measuredHeight
}
// Add shadow to text view text
fun TextView.shadow(){
this.setShadowLayer(
1.3f, // radius
4.0f, // dx
4.0f, // dy
Color.parseColor("#FF2B2B2B") // shadow color
)
}
// Put some dummy text to text view
fun TextView.dummyText(){
this.text = "Lorem Ipsum is simply dummy text of the printing and" +
" typesetting industry. Lorem Ipsum has been the industry's" +
" standard dummy text ever since the 1500s, when an unknown" +
" printer took a galley of type and scrambled" +
" it to make a type specimen book."
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F8F8F8"
android:padding="24dp">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="0dp"
android:fontFamily="sans-serif"
android:textSize="28sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>


- kotlin - SwipeRefreshLayout example
- kotlin - Handler and Runnable example
- kotlin - ViewPager example
- kotlin - NumberPicker example
- kotlin - Navigation drawer example
- kotlin - GridView with BaseAdapter example
- kotlin - ListView ViewHolder example
- kotlin - AlertDialog yes no cancel button example
- kotlin - CountDownTimer start stop pause resume example
- kotlin - CountDownTimer days hours minutes seconds example