2010-07-20 58 views

回答

28

我沒有看到在TextView中像這樣的東西的屬性,但是你可以只設置之前,使文字大寫:

textView.setText(text.toUpperCase()); 

如果TextView的是一個EditText和任何你想要的用戶類型大寫可以實現TextWatcher並使用EditText addTextChangedListener添加它,onTextChange方法獲取用戶輸入並用大寫字母替換它。

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

如果'text'是一個字符串,那麼這個工作。如果你使用'R.string.someID'從你的xml文件中獲得String,那麼你需要拋出一個'Resources.getString'調用(http://developer.android.com/reference/android/ content/res/Resources.html#getString%28int%29) – MatrixFrog 2010-07-21 04:33:45

+1

我害怕我必須這樣做。希望能有一個我失蹤的簡單屬性。 – Joren 2010-07-22 20:12:31

+3

這不會創建一個stackOverFlow? – desgraci 2014-06-28 14:02:43

30

爲了您的EditText您可以使用InputFilter.AllCaps作爲過濾

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

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

你也可以指定你的EditText通過android:inputType

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

過濾器完美的工作非常感謝。但我不會推薦使用inputType「textCapCharacters」,因爲它已被棄用。 – Raykud 2012-04-17 22:56:32

+0

那麼我們應該使用什麼? – Mirko 2012-10-22 15:44:23

+2

@Raykud你在哪裏看到'textCapCharacters'已被棄用? – fiddler 2012-12-04 15:09:27

1

我發現this在Android開發者指南:

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

這隻適用於EditText,而不適用於TextView。從文檔:「[...]自動大寫什麼用戶類型」 – 2012-08-30 19:31:15

+1

真正的答案?呵呵....「android:大寫不推薦使用:使用inputType代替」 – 2013-09-10 15:56:51

96

試試這個:

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

這可以工作,但不適用於所有版本或佈局編輯器。 – Kieran 2012-10-24 03:47:25

+7

'android:textAllCaps'只適用於你的minSdkVersion> = 14(冰淇淋三明治) – 2014-02-14 11:49:57

+0

我知道這是3年前的評論,但這隻適用於使用屏幕鍵盤 - 如果有人有一個物理鍵盤(藍牙或設備),那麼它被忽略,最好使用一個監聽器 – 2015-12-15 11:31:39

2

你可以做到這一點,只增加TYPE_TEXT_FLAG_CAP_CHARACTERS到的inputType ::

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

我希望得到幫助!

5

使用

android:textAllCaps="true" 

這會讓你的所有Textview資本。

相關問題