How to capitalize the first letter of text in a TextView in an Android Application

前端 未结 11 1698
孤街浪徒
孤街浪徒 2020-12-23 15:35

I\'m not referring to textInput, either. I mean that once you have static text in a TextView (populated from a Database call to user inputted data (that may not be Capitaliz

相关标签:
11条回答
  • 2020-12-23 16:09

    You can add Apache Commons Lang in Gradle like compile 'org.apache.commons:commons-lang3:3.4'

    And use WordUtils.capitalizeFully(name)

    0 讨论(0)
  • 2020-12-23 16:09

    Please create a custom TextView and use it :

    public class CustomTextView 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);
        }
    }
    
    0 讨论(0)
  • 2020-12-23 16:10

    for Kotlin, just call

    textview.text = string.capitalize()
    
    0 讨论(0)
  • 2020-12-23 16:13

    For Kotlin, if you want to be sure that the format is "Aaaaaaaaa" you can use :

    myString.toLowerCase(Locale.getDefault()).capitalize()
    
    0 讨论(0)
  • 2020-12-23 16:17

    Following does not apply to TextView, but works with EditText; even then, it applies to the text entered from the keyboard, not the text loaded with setText(). To be more specific, it turns the Caps on in the keyboard, and the user can override this at her will.

    android:inputType="textCapSentences"
    

    or

    TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
    

    This will CAP the first letter.

    or

    compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)
    
    tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));
    
    0 讨论(0)
  • 2020-12-23 16:19

    For me none of working:

    Function:

    private String getCapsSentences(String tagName) {
        String[] splits = tagName.toLowerCase().split(" ");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < splits.length; i++) {
            String eachWord = splits[i];
            if (i > 0 && eachWord.length() > 0) {
                sb.append(" ");
            }
            String cap = eachWord.substring(0, 1).toUpperCase() 
                    + eachWord.substring(1);
            sb.append(cap);
        }
        return sb.toString();
    }
    

    Result:

    I/P brain O/P Brain

    I/P Brain and Health O/P Brain And Health

    I/P brain And health to O/P Brain And Health

    I/P brain's Health to O/P Brain's Health

    I/P brain's Health and leg to O/P Brain's Health And Leg

    Hope this would help you.

    0 讨论(0)
提交回复
热议问题