2011-01-26 179 views
291

我正在研究一個小小的個人待辦事項列表應用程序,至今一切工作都很順利。我想弄清楚一點小怪癖。每當我去添加一個新的項目時,我都會看到一個帶有EditText視圖的對話框。當我選擇EditText視圖時,鍵盤出現以輸入文本,因爲它應該。在大多數應用程序中,默認情況似乎是,第一個字母是按住Shift鍵的,儘管這不符合我的觀點。必須有一個簡單的方法來解決,但我已經重複搜索參考,並找不到它。我認爲必須有適配器加載的引用的xml屬性,但我無法找到它是什麼。EditText的第一個字母大寫字母

回答

680

靜態(即在您的佈局XML文件中):在EditText上設置android:inputType="textCapSentences"

以編程方式:您必須將InputType.TYPE_CLASS_TEXT包含在EditTextInputType中,例如,

EditText editor = new EditText(this); 
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

可以用文本及其變化相結合,要求每個句子的第一個字符的大小寫。

- Google Docs

+4

testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 或android:inputType =「textCapSentences」將只在您的設備鍵盤啓用Auto Capitalize Setting時起作用。 – Lakshmanan 2014-03-11 09:47:07

+5

爲什麼啓用這導致我的`機器人:行=「7」'不再顯示七行(現在默認回到1線) – 2015-12-14 02:38:43

+1

estEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);或者android:inputType =「textCapSentences」將僅適用於您的設備鍵盤啓用了Auto Capitalize Setting。 **編程文本字段爲單行的解決方案** – Swift 2016-12-20 07:24:24

24
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 

android:inputType="textCapSentences"只會工作,如果你的設備的鍵盤自動大寫設置爲啓用。

14

我遇到了同樣的問題,只是分享我發現的。可以幫助你和其他人...

試試這個在你的layout.add在你的EditText下面的行。

android:inputType="textCapWords|textCapSentences" 

正常工作對我..希望它的工作原理還對你...

0

嘗試這個代碼,它將利用所有單詞第一個字符。

- 設置爲addTextChangedListener視圖的EditText

edt_text.addTextChangedListener(觀察者);

- 添加TextWatcher

TextWatcher watcher = new TextWatcher() { 
    int mStart = 0; 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     mStart = start + count; 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     String input = s.toString(); 
     String capitalizedText; 
     if (input.length() < 1) 
      capitalizedText = input; 
     else if (input.length() > 1 && input.contains(" ")) { 
      String fstr = input.substring(0, input.lastIndexOf(" ") + 1); 
      if (fstr.length() == input.length()) { 
       capitalizedText = fstr; 
      } else { 
       String sstr = input.substring(input.lastIndexOf(" ") + 1); 
       sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1); 
       capitalizedText = fstr + sstr; 
      } 
     } else 
      capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1); 

     if (!capitalizedText.equals(edt_text.getText().toString())) { 
      edt_text.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 

       } 

       @Override 
       public void afterTextChanged(Editable s) { 
        edt_text.setSelection(mStart); 
        edt_text.removeTextChangedListener(this); 
       } 
      }); 
      edt_text.setText(capitalizedText); 
     } 
    } 
}; 
13

應用按照XML格式的EditText上線。

android:inputType="textCapSentences|textMultiLine" 

它也將允許多線支持。

0

此前它曾經是android:capitalize="words",現在已不建議。推薦的替代方案是使用android:inputType="textCapWords"

請注意,如果您的設備鍵盤自動大寫設置已啓用,這纔有效。

要做到這一點編程,用下面的方法:在XML,以及在這樣的JAVA文件

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

1

設置輸入類型,

在XML中,

安卓的inputType = 「textMultiLine | textCapSentences」

它還將允許和JAVA文件,

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

確保鍵盤的自動大寫設置啓用

相關問題