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
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:
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>
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!" } }
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!" } }
View Binding is the recommended way to access views efficiently and safely. Here's how you can use it:
build.gradle
:android { ... viewBinding { enabled = true } }
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.
Creating TextView in Kotlin Android:
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 } }
Styling TextView in 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 } }
Handling text formatting in Kotlin TextView:
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 } }
Clickable TextView in 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 } }
TextView with different font styles in 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 } }
Kotlin TextView with multiple languages:
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 } }
Dynamic text updates in Kotlin TextView:
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 } }
Accessibility features for TextView in Kotlin:
<!-- Provide content descriptions and other accessibility attributes -->
Kotlin TextView with HTML content:
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 } }
TextView and state management in 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 } }
Customizing TextView appearance in Kotlin:
<!-- Apply styles and themes to Kotlin TextView -->
TextView with drawable in 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 } }
TextView and spannable text in 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 } }