How to Center Text Horizontally and Vertically in a TextView in Android

How to Center Text Horizontally and Vertically in a TextView in Android

22 May 2024 Stephan Petzl Leave a comment Tech-Help

Centering text within a TextView in Android is a common requirement for many app developers. Whether you are designing a splash screen, a button, or any other UI element, ensuring that the text is perfectly centered can greatly enhance the user experience. This guide will walk you through the steps to achieve this using XML and Java/Kotlin.

Using XML Layout

One of the simplest ways to center text in a TextView is by using XML layout attributes. Here’s an example:

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/your_text_string" />
    

The android:gravity attribute is used to control the alignment of the text within the TextView. Setting it to center ensures that the text is centered both horizontally and vertically.

Using Java or Kotlin

If you prefer to set the gravity programmatically, you can do so in your Java or Kotlin code:

Java

TextView textView = findViewById(R.id.textView);
textView.setGravity(Gravity.CENTER);
    

Kotlin

val textView: TextView = findViewById(R.id.textView)
textView.gravity = Gravity.CENTER
    

Additional Options

Depending on your layout requirements, you might need to center the text horizontally or vertically only. Here are additional gravity options:

  • android:gravity="center_horizontal" – Centers the text horizontally.
  • android:gravity="center_vertical" – Centers the text vertically.

Using RelativeLayout

If you are using a RelativeLayout, you can also use the layout_centerInParent attribute:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello World" />
</RelativeLayout>
    

Using LinearLayout

For LinearLayout, you can combine the gravity and layout_gravity attributes:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World" />
</LinearLayout>
    

Conclusion

Centering text in a TextView can be achieved through various methods, whether you are working with XML layouts or programmatically setting attributes in Java or Kotlin. By understanding and utilizing these techniques, you can ensure your app’s UI is both aesthetically pleasing and user-friendly.

For mobile developers looking to streamline their testing processes, consider using Repeato, a no-code test automation tool for iOS and Android. Repeato allows you to create, run, and maintain automated tests quickly and efficiently, leveraging computer vision and AI. This ensures that you can focus on developing a great product while delegating test automation to non-technical colleagues or QA teams. Learn more about Repeato and how it can enhance your development workflow on our blog.

Like this article? there’s more where that came from!