Android Tutorial

Software Setup and Configuration

Android Studio

File Structure

Components

Core Topics

Layout

View

Button

Intent and Intent Filters

Toast

RecyclerView

Fragments

Adapters

Other UI Component

Image Loading Libraries

Date and Time

Material Design

Bars

Working with Google Maps

Chart

Animation

Database

Advance Android

Jetpack

Architecture

App Publish

App Monetization

TextView in Kotlin

In traditional Android development (before Jetpack Compose), TextView is a fundamental component that displays read-only text to the user. Using Kotlin, working with TextView becomes more concise and expressive. Here's a simple guide on how to use TextView in Kotlin:

1. XML Layout:

Firstly, you'd declare your TextView in your XML layout file.

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/myTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello, Kotlin!" />

</LinearLayout>

2. Kotlin Code:

Then, in your Kotlin activity, you can reference and manipulate the TextView.

MainActivity.kt:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView

class MainActivity : AppCompatActivity() {

    private lateinit var myTextView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        myTextView = findViewById(R.id.myTextView)

        // Modify the text
        myTextView.text = "Hello from Kotlin code!"
    }
}

Using Kotlin Extensions (Kotlin Android Extensions):

Kotlin Android Extensions allow you to eliminate the use of findViewById() and directly reference XML views in your Kotlin code. However, please note that these extensions have been deprecated in favor of View Binding.

With Kotlin Android Extensions, you can simplify the code like this:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Directly reference the TextView without findViewById
        myTextView.text = "Hello from Kotlin with Extensions!"
    }
}

Using View Binding:

View Binding is the recommended way to access views efficiently and safely. Here's how you can use it:

  • Enable View Binding in your build.gradle:
android {
    ...
    viewBinding {
        enabled = true
    }
}
  • Use the generated binding class:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.yourapplication.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.myTextView.text = "Hello from Kotlin with View Binding!"
    }
}

The approach you choose depends on your preferences and requirements, but View Binding is currently the recommended approach for accessing views.

  1. Creating TextView in Kotlin Android:

    • Description: The fundamental example of creating a TextView in Kotlin for Android.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.widget.TextView
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val myTextView = TextView(this)
              myTextView.text = "Hello, TextView!"
              // Add myTextView to your layout
          }
      }
      
  2. Styling TextView in Kotlin:

    • Description: Demonstrates how to apply styles to a TextView in Kotlin for visual customization.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.widget.TextView
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val styledTextView = TextView(this, null, R.style.MyTextStyle)
              styledTextView.text = "Styled TextView"
              // Add styledTextView to your layout
          }
      }
      
  3. Handling text formatting in Kotlin TextView:

    • Description: Covers text formatting options available in Kotlin TextView.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.text.SpannableString
      import android.text.style.StyleSpan
      import android.widget.TextView
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val formattedText = SpannableString("Bold and Italic Text")
              formattedText.setSpan(StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 0, 4, 0)
              
              val formattedTextView = TextView(this)
              formattedTextView.text = formattedText
              // Add formattedTextView to your layout
          }
      }
      
  4. Clickable TextView in Kotlin:

    • Description: Shows how to make a TextView clickable in Kotlin.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.widget.TextView
      import android.content.Intent
      import android.net.Uri
      import android.view.View
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val clickableTextView = TextView(this)
              clickableTextView.text = "Click me!"
              clickableTextView.setOnClickListener {
                  val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.example.com"))
                  startActivity(intent)
              }
              // Add clickableTextView to your layout
          }
      }
      
  5. TextView with different font styles in Kotlin:

    • Description: Demonstrates applying different font styles to a Kotlin TextView.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.graphics.Typeface
      import android.widget.TextView
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val styledTextView = TextView(this)
              styledTextView.text = "Different Font Styles"
              styledTextView.setTypeface(null, Typeface.BOLD_ITALIC)
              // Add styledTextView to your layout
          }
      }
      
  6. Kotlin TextView with multiple languages:

    • Description: Displays text in multiple languages using Kotlin TextView.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.widget.TextView
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val multilingualTextView = TextView(this)
              multilingualTextView.text = "Hello, ���, ����ˤ���"
              // Add multilingualTextView to your layout
          }
      }
      
  7. Dynamic text updates in Kotlin TextView:

    • Description: Demonstrates updating a Kotlin TextView dynamically based on application logic.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.widget.TextView
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val dynamicText = "Dynamic Text"
              val dynamicTextView = TextView(this)
              dynamicTextView.text = dynamicText
              // Add dynamicTextView to your layout
          }
      }
      
  8. Accessibility features for TextView in Kotlin:

    • Description: Discusses accessibility features and considerations when using Kotlin TextView.
    • Example Code (XML):
      <!-- Provide content descriptions and other accessibility attributes -->
      
  9. Kotlin TextView with HTML content:

    • Description: Shows how to display HTML content in Kotlin TextView.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.text.Html
      import android.widget.TextView
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val htmlContent = "<b>HTML</b> <i>Content</i>"
              val htmlTextView = TextView(this)
              htmlTextView.text = Html.fromHtml(htmlContent, Html.FROM_HTML_MODE_COMPACT)
              // Add htmlTextView to your layout
          }
      }
      
  10. TextView and state management in Kotlin:

    • Description: Explores how to manage state in Kotlin TextView.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.widget.TextView
      import androidx.lifecycle.ViewModelProvider
      
      class MainActivity : AppCompatActivity() {
          private lateinit var viewModel: MyViewModel
      
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
              val statefulTextView = TextView(this)
              statefulTextView.text = viewModel.getText()
              // Add statefulTextView to your layout
          }
      }
      
  11. Customizing TextView appearance in Kotlin:

    • Description: Guides on customizing the appearance of Kotlin TextView for a cohesive design.
    • Example Code (XML):
      <!-- Apply styles and themes to Kotlin TextView -->
      
  12. TextView with drawable in Kotlin:

    • Description: Shows how to add a drawable to a Kotlin TextView.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.widget.TextView
      import androidx.core.content.ContextCompat
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val drawable = ContextCompat.getDrawable(this, R.drawable.ic_launcher_foreground)
              val drawableTextView = TextView(this)
              drawableTextView.text = "TextView with Drawable"
              drawableTextView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
              // Add drawableTextView to your layout
          }
      }
      
  13. TextView and spannable text in Kotlin:

    • Description: Introduces spannable text for rich text formatting in Kotlin TextView.
    • Example Code (Kotlin):
      import android.os.Bundle
      import androidx.appcompat.app.AppCompatActivity
      import android.text.Spannable
      import android.text.SpannableString
      import android.text.style.ForegroundColorSpan
      import android.widget.TextView
      import androidx.core.content.ContextCompat
      
      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val spannableText = SpannableString("Colored Text")
              spannableText.setSpan(ForegroundColorSpan(ContextCompat.getColor(this, R.color.colorAccent)),
                  0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
      
              val spannableTextView = TextView(this)
              spannableTextView.text = spannableText
              // Add spannableTextView to your layout
          }
      }