Как заглавные буквы первой буквы текста в TextView в Android-приложении


Я не имею в виду textInput, либо. Я имею в виду, что как только у вас есть статический текст в TextView (заполненный из вызова базы данных для введенных пользователем данных (которые могут не быть заглавными)), как я могу убедиться, что они заглавные?

спасибо!

7 53

7 ответов:

Я должен быть в состоянии выполнить это с помощью стандартных манипуляций строки java, ничего Android или TextView конкретного.

что-то типа:

String upperString = myString.substring(0,1).toUpperCase() + myString.substring(1);

хотя есть, вероятно, миллион способов сделать это. Смотрите строка документация.

android:inputType="textCapSentences"

или

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

Это будет первая буква.

или

compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)

tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));  
return sb.toString();

Вы можете добавить Apache Commons Lang в Gradle как compile 'org.apache.commons:commons-lang3:3.4'

и использовать WordUtils.capitalizeFully(name)

для будущих посетителей, вы можете также (лучший IMHO) импортировать WordUtil с Apache и добавить много полезных методов для вас приложение, как capitalize как показано ниже:

как заработать первый символ каждого слова в строке

пожалуйста, создайте пользовательский TextView и используйте его:

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);
    }
}

для меня не работает:

функция:

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();
}

результат:

I / PbrainO / P мозг

I / PBrain and HealthO / PBrain And Health

I / Pbrain And health до O / PBrain And Health

I / Pbrain's Health до O / PBrain's Health

I / Pbrain's Health and leg до O / PBrain's Health And Leg

надеюсь, что это поможет вам.