2012-04-04 5 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() 함수를 사용할 수 있습니다.

그렇지 않으면 EditText에 TextWatcher를 추가하고 특정 기준에 따라 각 입력 이벤트의 유효성을 검사 할 수 있습니다.

+0

@bgs 당신은 정말 대단입니다 ... – wonsuc

+0

샘플 [하부 케이싱의 TextWatcher (https://gist.github.com/karolw/5176884e21511676f2020cc0ebe88d20) – bgs

9

첫 번째 문자를 기본값으로 작게하려면 - android:capitalize="none"을 사용할 수 있습니다. 그런 다음 버튼을 수동으로 클릭하여 첫 번째 문자를 대문자로 변환해야합니다. 다른 아직 이것에 대한 좋은 답변이없는 놀랍지 this link.

+1

음,이 기본으로 생각하지만 그렇지 않습니다됩니다 모든 전화기에. Android 2.3.3을 실행하는 G2에서 첫 글자는 여전히 대문자로되어 있습니다 (capitalize = "none"사용). – robsf

+1

이상합니다. HTC Wildfire S에서 2.3.5에서 작동합니다. – Rajkiran

+1

괜찮 았지만 robsf가 옳았습니다. 모든 휴대폰 및/또는 OS 버전에서 작동하지 않습니다. 보편적 인 방법이 있습니까?사용자가 edittext를 클릭하고 키보드를 모두 소문자로 설정할 때 프로그래밍 방식으로 키보드 실행을 무시하는 것이 될 것이라고 생각합니다. 나는 올바른 길을 가고 있는가? –

3

시도,

android:digits="qwertyuiopasdfghjklzxcvbnm" 
5

을 따르십시오. 아니면 찾을 수없는 또 다른 질문 일 수도 있습니다.

내 솔루션은 여기에 있습니다.

editText의 모든 텍스트는 소문자입니다.

원하는대로 문자열을 수정할 수 있습니다. 예를 들어
: 당신은 모든 텍스트를 소문자 할 및 공백은

당신은 대체 할 수있다 (의는 이메일 입력 필드의 가정 해 봅시다) 허용되지 return ...이와 같은 그 :

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

같은 방법으로 당신이 할 수있는 개별 문자를 허용하거나 거부합니다.
이 예제는 e 또는 E을 모두 3으로 바꿉니다.

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

등등.

이 정보가 도움이되기를 바랍니다.

관련 문제