2012-04-04 25 views
3

我在我的Android項目中使用了帶有建議的可搜索項目。它基本上是一個EditText如何使可搜索項目的EditText中的文本小寫?

<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="@string/app_name" 
    android:hint="@string/search.hint" 
    android:includeInGlobalSearch="true" 
    android:searchSettingsDescription="@string/search.hint" 
    android:searchSuggestAuthority="com.xxx.android.provider.SearchSuggestionsProvider" 
    android:searchSuggestSelection=" ?" 
    android:inputType="text" 
    android:imeOptions="actionSearch"> 
</searchable> 

當我開始鍵入它顯示爲第一個字母大寫。爲什麼?我希望它以小寫字母開頭。可能嗎?

回答

4

有各種各樣的inputType選項,但沒有專門用於保持文本小寫。

您可能希望通過他們的完整清單,看這裏: http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

我希望「textUri」會做你想要什麼。

您可以隨時在文本輸入後使用String.toLowerCase()函數。

否則,您可以添加一個TextWatcher到您的EditText中,並根據您的特定條件驗證每個輸入事件。

+0

@bgs你真棒... – wonsuc 2017-08-13 17:21:42

+0

[下殼TextWatcher](https://gist.github.com/karolw/5176884e21511676f2020cc0ebe88d20) – bgs 2017-08-15 06:20:43

9

如果您希望默認情況下第一個字符是小寫字母,您可以使用 - android:capitalize="none"。然後你需要手動點擊一個按鈕來大寫第一個字符。否則遵循this link.

+1

那麼,這應該是默認的,但事實並非如此在所有的手機上。在運行Android 2.3.3的G2上,第一個字母仍然是大寫,即使使用大寫=「無」 – robsf 2012-04-04 16:30:59

+1

奇怪。在我的HTC Wildfire S上運行2.3.5 – Rajkiran 2012-04-05 10:13:00

+1

這很好,但是robsf是正確的,它不適用於所有手機和/或操作系統版本。有一種普遍的方式嗎?我認爲這是編程方式覆蓋鍵盤啓動時,用戶點擊edittext,然後將鍵盤設置爲全部小寫。我在正確的軌道上嗎? – 2012-04-14 00:03:27

3

嘗試,

android:digits="qwertyuiopasdfghjklzxcvbnm" 
5

我很驚訝,沒有一個很好的答案爲這個呢。或者,也許這是另一個我無法找到的問題。

所以這是我的解決方案。

editText.setFilters(new InputFilter[] { 
    new InputFilter.AllCaps() { 
     @Override 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
      return String.valueOf(source).toLowerCase(); 
     } 
    } 
}); 

無論如何,editText的全部文字都是小寫字母。

不管你喜歡,你都可以修改字符串。
例如:你希望所有的文本爲小寫不允許有空格(讓我們說這是一個電子郵件輸入字段)

您可以替換return ...像這樣:

return String.valueOf(source).toLowerCase().replace(" ", ""); 

用同樣的方法,你可以允許或拒絕個人角色。
本示例用3替換所有eE

return String.valueOf(source).replace("e", "3").replace("E", "3"); 

依此類推。

我希望這可以幫助別人。

相關問題