Capitalize first letter of TextView in an Android layout xml file

qwertzguy picture qwertzguy · Sep 4, 2013 · Viewed 15.3k times · Source

I have a TextView in a layout xml file like this:

<TextView
   android:id="@+id/viewId"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/string_id" />

My string is specified like this:

<string name="string_id">text</string>

Is it possible to make it display "Text" instead of "text" without java code?
(and without changing the string itself either)

Answer

Hyrum Hammon picture Hyrum Hammon · Sep 5, 2013

No. But you can create a simple CustomView extending TextView that overrides setText and capitalizes the first letter as Ahmad said like this and use it in your XML layouts.

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class CapitalizedTextView extends TextView {

    public CapitalizedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        if (text.length() > 0) {
            text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length());
        }
        super.setText(text, type);
    }
}