2010-07-20 10 views

Odpowiedz

28

nie widzę czegoś takiego w TextView atrybuty, jednak można po prostu zrobić wielkie litery tekstu przed ustawieniem go:

textView.setText(text.toUpperCase()); 

Jeśli TextView jest EditText i chcesz cokolwiek użytkownik wpisze do bądź wielki, możesz zaimplementować TextWatchera i użyć EditText addTextChangedListener, aby go dodać, a w metodzie onTextChange wprowadzić użytkownika i zastąpić go tym samym tekstem wielkimi literami.

editText.addTextChangedListener(upperCaseTextWatcher); 

final TextWatcher upperCaseTextWatcher = new TextWatcher() { 

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
} 

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    editText.setText(editText.getText().toString().toUpperCase()); 
    editText.setSelection(editText.getText().toString().length()); 
} 

public void afterTextChanged(Editable editable) { 
} 

};

+0

Działa to, gdy 'tekst' jest łańcuchem. Jeśli otrzymujesz String z plików xml przy użyciu 'R.string.someID', musisz rzucić wywołanie' Resources.getString' (http://developer.android.com/reference/android/ content/res/Resources.html # getString% 28int% 29) – MatrixFrog

+1

Obawiałem się, że będę musiał to zrobić w ten sposób. Miałem nadzieję, że nie będzie prostego atrybutu, którego mi brakowało. – Joren

+3

Czy to nie spowoduje utworzenia StackOverFlow? – desgraci

30

Dla EditText można wykorzystać InputFilter.AllCaps jako filtr

editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()}); 

Patrz: http://d.android.com/reference/android/text/InputFilter.AllCaps.html

Ponadto można określić EditText poprzez android:inputType:

<EditText 
    ... 
    android:inputType="textCapCharacters" /> 
+1

filtr działał doskonale, bardzo dziękuję. jednak nie polecam używania inputType "textCapCharacters", ponieważ jest przestarzałe. – Raykud

+0

, więc co powinniśmy użyć? – Mirko

+2

@Raykud gdzie widziałeś, że 'textCapCharacters' jest przestarzałe? – fiddler

1

znalazłem this na Przewodnik dla programistów Androida:

<TextView 
... 
android:capitalize="characters" 
... 
/> 
+3

Dotyczy to tylko EditText, a nie TextView. Z dokumentacji: "[...] automatycznie kapitalizuje, co użytkownik wpisze" –

+1

Prawdziwa odpowiedź ?? huh .... "android: capitalize jest przestarzałe: użyj inputType zamiast" –

96

Spróbuj tego:

<TextView 
      android:textAllCaps="true" 
    /> 
+4

To działa, ale nie we wszystkich wersjach lub w edytorze layoutu. – Kieran

+7

'android: textAllCaps' działa tylko wtedy, gdy minSdkVersion> = 14 (Ice Cream Sandwich) –

+0

Wiem, że to dla komentarzu od 3+ lat temu, ale to działa tylko jeśli używasz klawiatury ekranowej - jeśli ktoś ma fizyczną klawiaturę (bluetooth lub na urządzeniu), a następnie jest ignorowana, lepiej użyć słuchacza –

2

Można to zrobić, dodając tylko TYPE_TEXT_FLAG_CAP_CHARACTERS do InputType ::

editText.setInputType(android.text.InputType.TYPE_CLASS_TEXT 
        + android.text.InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS); 

mam nadzieję pomóc!

5

użycie

android:textAllCaps="true" 

to sprawi, że wszystko Textview kapitału.

Powiązane problemy