Adding Padding to ActionBar Title (Kotlin)
This code demonstrates how to add left-side padding to the title displayed in the Android ActionBar using Kotlin. The approach involves creating a custom TextView and setting it as the action bar's custom view.
Breakdown and Explanation:
MainActivity Setup:
- The 
MainActivityclass inherits fromAppCompatActivity. - It defines a 
contextvariable to hold the activity reference. - In 
onCreate, the layout (activity_main.xml) is inflated and the context is retrieved. 
- The 
 Customizing the ActionBar:
- The code checks if the 
supportActionBaris available. - It creates a custom TextView using the 
actionBarCustomTitlemethod. - This TextView is then set as the 
customViewof the action bar usingsupportActionBar?.customView. - To add padding, the 
setPaddingmethod is called on thecustomView. Here, only left padding of 30dp is set. - Finally, additional action bar settings like enabling the home button, logo, and setting a custom logo are applied.
 
- The code checks if the 
 Creating Custom Title View:
- The 
actionBarCustomTitlemethod creates aTextView. - It sets the text for the title, initializes layout parameters (wrapping content for both width and height), and applies them to the TextView.
 - The text appearance is set to the default action bar title style (
TextAppearance_Material_Widget_ActionBar_Title) and the text color is set to white. 
- The 
 Converting Values to dp:
- An extension method 
toDpis defined to convert integer values into density-independent pixels (dp) based on the context's display metrics. 
- An extension method 
 
Summary
This code provides a flexible way to customize the ActionBar title in your Android app using Kotlin. By creating a custom TextView and setting it as the action bar's view, you can control various aspects of the title's appearance, including adding padding for better visual alignment or spacing. The code also demonstrates the use of an extension method for easy conversion to dp units.
package com.cfsuman.kotlintutorials
import android.content.Context
import android.graphics.Color
import android.os.Bundle
import android.util.TypedValue
import android.view.Gravity
import android.widget.TextView
import androidx.appcompat.app.ActionBar.DISPLAY_SHOW_CUSTOM
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout.LayoutParams
class MainActivity : AppCompatActivity() {
    lateinit var context:MainActivity
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // Get the context
        context = this
        // If the support action bar is available
        supportActionBar?.apply {
            // Show custom title in action bar
            customView = actionBarCustomTitle()
            // Set action bar title left padding
            // Space between action bar logo and title
            customView.setPadding(
                30.toDp(context), // left padding
                0, // top padding
                0, // right padding
                0 // bottom padding
            )
            // More action bar settings
            displayOptions = DISPLAY_SHOW_CUSTOM
            setDisplayShowHomeEnabled(true)
            setDisplayUseLogoEnabled(true)
            setLogo(R.drawable.ic_action_help)
        }
    }
    // Method to create a custom title for action bar
    private fun actionBarCustomTitle():TextView{
        return TextView(context).apply {
            // Set action bar title text
            text = "Title Padding Left 30 Dp"
            // Initialize the layout params instance
            val params = LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT
            )
            // Apply the layout parameters to the text view
            layoutParams = params
            // Set the action bar title text appearance
            setTextAppearance(
                android.R.style
                    .TextAppearance_Material_Widget_ActionBar_Title
            )
            // Set the action bar title text color
            setTextColor(Color.WHITE)
        }
    }
}
// Extension method to convert values to dp
fun Int.toDp(context: Context):Int = TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP,
    this.toFloat(),
    context.resources.displayMetrics
).toInt()
<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rootLayout"
    android:background="#DCDCDC" />
- android kotlin - Bitmap sharpen
 - android kotlin - Bitmap sepia effect
 - android kotlin - Bitmap lighting color filter
 - android kotlin - ThumbnailUtils example
 - android kotlin - Base64 string to bitmap
 - android kotlin - ImageView grayscale filter
 - android kotlin - Bitmap invert colors
 - android kotlin - Drawable tint programmatically
 - android kotlin - Set image from drawable
 - android kotlin - ActionBar title text size
 - android kotlin - ActionBar title color
 - android kotlin - ActionBar title style