2010-07-20 34 views

Trả lời

28

tôi không thấy bất cứ điều gì như thế này trong TextView thuộc tính, tuy nhiên bạn chỉ có thể làm cho hoa văn bản trước khi đặt nó:

textView.setText(text.toUpperCase()); 

Nếu TextView là một EditText và bạn muốn bất cứ điều gì các loại người dùng được viết hoa bạn có thể thực hiện một TextWatcher và sử dụng EditText addTextChangedListener để thêm nó, một phương thức onTextChange lấy đầu vào của người dùng và thay thế nó bằng cùng một chữ in hoa.

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

Điều đó hoạt động nếu 'văn bản' là một Chuỗi. Nếu bạn nhận được chuỗi từ tệp xml của mình bằng cách sử dụng 'R.string.someID', thì bạn sẽ cần phải thực hiện cuộc gọi' Resources.getString' (http://developer.android.com/reference/android/ content/res/Resources.html # getString% 28int% 29) – MatrixFrog

+1

Tôi sợ tôi phải làm theo cách này. Đã hy vọng sẽ có một thuộc tính đơn giản mà tôi đã mất tích. – Joren

+3

Điều này sẽ không tạo stackOverFlow? – desgraci

30

Đối EditText của bạn, bạn có thể sử dụng InputFilter.AllCaps như lọc

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

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

Ngoài ra, bạn có thể chỉ định EditText của bạn thông qua android:inputType:

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

bộ lọc hoạt động hoàn hảo nhờ rất nhiều. tuy nhiên tôi sẽ không khuyên bạn sử dụng inputType "textCapCharacters" kể từ khi nó không còn được dùng nữa. – Raykud

+0

vì vậy chúng tôi nên sử dụng những gì? – Mirko

+2

@Raykud nơi bạn đã thấy rằng 'textCapCharacters' không được chấp nhận? – fiddler

1

tôi thấy this tại hướng dẫn dành cho nhà phát triển Android:

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

Điều này chỉ áp dụng cho EditText, không áp dụng cho TextView. Từ tài liệu: "[...] tự động tận dụng tên người dùng" –

+1

Câu trả lời thực sự? huh .... "android: viết hoa không được dùng nữa: Sử dụng inputType thay thế" –

96

Hãy thử điều này:

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

Tác phẩm này hoạt động, nhưng không phải trong tất cả các phiên bản hoặc trong trình chỉnh sửa bố cục. – Kieran

+7

'android: textAllCaps' chỉ hoạt động nếu minSdkVersion> = 14 (Ice Cream Sandwich) –

+0

Tôi biết đó là nhận xét từ 3 năm trước, nhưng điều này chỉ hoạt động nếu bạn đang sử dụng bàn phím ảo - nếu ai đó có một bàn phím vật lý (bluetooth hoặc trên thiết bị) sau đó nó bị bỏ qua, nó tốt hơn để sử dụng một người nghe –

2

Bạn có thể làm điều đó, chỉ thêm TYPE_TEXT_FLAG_CAP_CHARACTERS để InputType ::

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

Tôi hy vọng được giúp đỡ!

5

sử dụng

android:textAllCaps="true" 

này sẽ làm cho tất cả Textview vốn của bạn.

Các vấn đề liên quan