안드로이드 에디트텍스트 속성 5. [inputMethod, inputType] (Android EditText Attributes 5)

2016. 12. 7. 17:49

1. EditText 속성 (5)

EditText 속성 리스트 및 요약 설명을 확인하시려면 [안드로이드 에디트텍스트 속성] 페이지를 참고하시기 바랍니다.


EditText 속성에 대한 자세한 설명 및 예제를 확인하시려면, 아래 표에서 속성 이름을 클릭하시기 바랍니다.


속성 속성 속성 속성 속성
autoLink autoText breakStrategy bufferType capitalize
cursorVisible digits drawableBottom drawableEnd drawableLeft
drawablePadding drawableRight drawableStart drawableTint drawableTintMode
drawableTop editable editorExtras elegantTextHeight ellipsize
ems fontFamily fontFeatureSettings freezesText gravity
height hint hyphenationFrequency imeActionId imeActionLabel
imeOptions includeFontPadding inputMethod inputType letterSpacing
lineSpacingExtra lineSpacingMultiplier lines linksClickable marqueeRepeatLimit
maxEms maxHeight maxLength maxLines maxWidth
minEms minHeight minLines minWidth numeric
password phoneNumber privateImeOptions scrollHorizontally selectAllOnFocus
shadowColor shadowDx shadowDy shadowRadius singleLine
text textAllCaps textAppearance textColor textColorHighlight
textColorHint textColorLink textIsSelectable textScaleX textSize
textStyle typeface width

2. EditText 속성 활용

2.1 텍스트 입력기(IME) 종류 및 유형 선택하기. (inputMethod, inputType)

"inputMethod" 속성은 EditText에 텍스트를 입력할 때, 입력 방법(input method)의 형태를 지정하기 위해 사용하는 속성입니다. 하지만 API Level 3에서 deprecated되었으며, 대신, 바로 아래의 "inputType" 속성으로 대체되었습니다.

  * android:inputMethod - 텍스트 입력 방법 지정.
        > deprecated in API Level 3.
        > "inputType" 속성으로 대체되었음.

"inputType" 속성은 EditText의 텍스트가 의미하는 데이터의 유형에 따라, 텍스트 입력기(IME)를 통해 입력할 수 있는 문자를 제한하거나, 입력 방법을 지정 또는 텍스트 입력기(IME)와 관련된 부가 기능을 설정할 때 사용하는 속성입니다. 여기서 말하는 "데이터의 유형"이라 함은 텍스트 문자열, 숫자, 전화번호 등과 같이, EditText에 표시된 데이터의 형식을 뜻합니다. 그리고 "입력 방법"은 데이터 유형에 따라 텍스트 입력기(IME)의 키보드 자판이 어떤 모양(QWERTY, 숫자 전용)으로 표시될 것인지를 의미하는 것입니다.


 * android:inputType - 텍스트 입력기(IME)에 의해 제공되는 텍스트 입력 방법 및 부가 기능 설정.
        > 단독 또는 값의 종류에 따라 '|' 기호로 조합하여 사용 가능.
          -. none                : 데이터 형식 지정하지 않음. EditText 편집 불가.
          -. text                : 텍스트 형식. 아래의 textXXX와 조합 가능. 
          -. textCapCharacters   : 모든 문자를 대문자로 변환. 실제로는 Shift 키가 자동 설정된 형태로 동작. 
          -. textCapWords        : 모든 단어의 앞 문자만 대문자로 변환.
          -. textCapSentences    : 모든 문장의 첫 번째 문자를 대문자로 자동 변환.
          -. textAutoCorrect     : 입력 텍스트 자동 교정.
          -. textAutoComplete    : 입력 텍스트 자동 완성.
          -. textMultiLine       : 멀티 라인 기능 사용. (설정되지 않으면 single line만 사용 가능)
          -. textImeMultiLine    : IME에서 멀티 라인이 가능하도록 지정.
          -. textNoSuggestions   : IME에서 사전에 기초한 제안 단어 보이지 않기.
          -. textUri             : URI 형식의 텍스트 입력.
          -. textEmailAddress    : e-mail 주소 형식의 텍스트 입력.
          -. textEmailSubject    : e-mail 제목 형식의 텍스트 입력.
          -. textShortMessage    : 단문 메시지(short message) 형식의 텍스트 입력.
          -. textLongMessage     : 장문 메시지(long message) 형식의 텍스트 입력.
          -. textPersonName      : 사람 이름 입력.
          -. textPostalAddress   : 우편 번호 형식의 텍스트.
          -. textPassword        : 패스워드 입력.
          -. textVisiblePassword : 보여져야 하는 패스워드.
          -. textWebEditText     : 웹 폼(web form)의 텍스트 형식.
          -. textFilter          : 필터링(filtering) 용도로 사용되는 텍스트 입력.
          -. textPhonetic        : 음성 발음(phonetic pronunciation) 입력.
          -. textWebEmailAddress : 웹 폼(web form)의 e-mail주소 형식.
          -. textWebPassword     : 웹 폼(web form)의 패스워드 형식.
          -. number              : 숫자 형식.
          -. numberSigned        : 부호있는 숫자 입력.
          -. numberDecimal       : 소수점 숫자 입력.
          -. numberPassword      : 숫자로 구성된 패스워드 입력.
          -. phone               : 전화번호 형식.
          -. datetime            : 날짜 및 시간 형식.
          -. date                : 날짜 형식.
          -. time                : 시간 형식.

inputType 속성에 사용할 수 있는 값이 너무 많아서, 어떤 값을 어떻게 사용해야 하는지 쉽게 감이 잡히지 않을 수도 있습니다. 하지만 속성 값의 시작 단어와 Java 코드에 정의된 상수, 그리고 16진수 값을 잘 살펴보면, 각 값들을 어떻게 사용할 수 있는지 쉽게 알 수 있습니다.

Name Hexa Value Class Constant in Java
none 0x00000000 none -
text 0x00000001 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_NORMAL.
textCapCharacters 0x00001001 text TYPE_TEXT_FLAG_CAP_CHARACTERS.
textCapWords 0x00002001 text TYPE_TEXT_FLAG_CAP_WORDS.
textCapSentences 0x00004001 text TYPE_TEXT_FLAG_CAP_SENTENCES.
textAutoCorrect 0x00008001 text TYPE_TEXT_FLAG_AUTO_CORRECT.
textAutoComplete 0x00010001 text TYPE_TEXT_FLAG_AUTO_COMPLETE.
textMultiLine 0x00020001 text TYPE_TEXT_FLAG_MULTI_LINE.
textImeMultiLine 0x00040001 text TYPE_TEXT_FLAG_IME_MULTI_LINE.
textNoSuggestions 0x00080001 text TYPE_TEXT_FLAG_NO_SUGGESTIONS.
textUri 0x00000011 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_URI.
textEmailAddress 0x00000021 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS.
textEmailSubject 0x00000031 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_SUBJECT.
textShortMessage 0x00000041 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_SHORT_MESSAGE.
textLongMessage 0x00000051 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_LONG_MESSAGE.
textPersonName 0x00000061 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PERSON_NAME.
textPostalAddress 0x00000071 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_POSTAL_ADDRESS.
textPassword 0x00000081 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD.
textVisiblePassword 0x00000091 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD.
textWebEditText 0x000000a1 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EDIT_TEXT.
textFilter 0x000000b1 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_FILTER.
textPhonetic 0x000000c1 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PHONETIC.
textWebEmailAddress 0x000000d1 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS.
textWebPassword 0x000000e1 text TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_PASSWORD.
number 0x00000002 number TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_NORMAL.
numberSigned 0x00001002 number TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_SIGNED.
numberDecimal 0x00002002 number TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL.
numberPassword 0x00000012 number TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_PASSWORD.
phone 0x00000003 phone TYPE_CLASS_PHONE.
datetime 0x00000004 datetime TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_NORMAL.
date 0x00000014 datetime TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_DATE.
time 0x00000024 datetime TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_TIME.

위의 표에 나열된 Java 상수 정의 값을 보면, 역할에 따라 크게 세 가지 분류의 정의가 있는 것을 확인할 수 있습니다.

1. CLASS : EditText에 표시되는 데이터의 유형. 텍스트 입력기(IME)의 표시 레이아웃을 결정.
2. VARIATION : CLASS의 범위 안에서 변형된(구체화된) 유형.
3. FLAG : 같은 CLASS 범위 안에서 조합하여 사용 가능한 부가 기능 설정 플래그.

먼저, 값의 prefix는 데이터의 유형(CLASS)을 나타냅니다. 즉, EditText에 들어있는 값이 텍스트 문자열 형식으로 취급되는지, 아니면 숫자나 전화번호, 또는 날짜시간 형식인지를 나타냅니다. 이 유형은 Java 코드 상에서 "TYPE_CLASS_XXX"로 정의되며, 16진수 값의 가장 하위 4비트를 사용합니다. 그리고 prefix에 따라 텍스트 입력기(IME)의 기본적인 표시 형태가 결정됩니다.

Prefix Hexa Value 데이터의 유형 Java 상수
textXxx 0x00000001 텍스트 문자열 형식 TYPE_CLASS_TEXT
numberXxx 0x00000002 숫자 형식 TYPE_CLASS_NUMBER
phoneXxx 0x00000003 전화번호 형식 TYPE_CLASS_PHONE
datetime 0x00000004 날짜 및 시간 형식 TYPE_CLASS_DATETIME

데이터 유형(TYPE_CLASS)에 따른 텍스트 입력기(IME) 표시 형태


다음, 각 데이터의 유형은, 데이터의 구체적인 의미에 따라 세분화되며, "TYPE_[CLASS]_VARIATION_XXX" 로 정의됩니다. 이렇게 VARIATION으로 세분화된 값은 "TYPE_CLASS_XXX"와 조합되어 EditText의 데이터를 특정짓는 속성값으로 정의됩니다. 그리고 경우에 따라 텍스트 입력기(IME)의 표시 형태가 변경되어 출력되기도 합니다.

예를 들어, "textUri"의 값은 EditText의 데이터가 텍스트 문자열 형식(TYPE_CLASS_TEXT)이고, 텍스트가 구체적으로 URI(TYPE_TEXT_VARIATION_URI) 형식의 텍스트로 사용된다는 것을 의미합니다. 그래서 텍스트 입력기(IME)의 버튼에 "/", ".com" 버튼이 자동으로 표시되도록 변형됩니다.

textUri : 0x00000011 = (TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_URI)

한 가지 주의할 점은, VARIATION 끼리는 두 개 이상의 값을 '|'로 조합하여 사용하지 않아야 합니다. 즉, "textUri|textEmailAddress" 같이 조합하는 것은 원하는 결과를 얻을 수 없습니다. 대신, inputType에 부가 기능을 사용하기 위해, 다음에 설명할 내용과 같이 FLAG를 조합하여 사용할 수 있습니다.

마지막으로, 데이터 유형에 따라 제공되는 부가 기능을 지정하기 위해 "TYPE_[CLASS]_FLAG_XXX" 값을 '|'를 사용하여 조합할 수 있습니다. "textXxx"에 사용할 수 있는 FLAG에 해당하는 값은 "textCapCharacters", "textCapWords", "textCapSentences", "textAutoCorrect", "textAutoComplete", "textMultiLine", "textImeMultiLine", "textNoSuggestions"이고, "numberXxx"에 사용할 수 있는 값은 "numberSigned", "numberDecimal"이 있습니다.

FLAG를 조합하는 하나의 예를 들면, Email 주소를 입력할 때, 기본적으로 모든 문자를 대문자로 입력받기 위해 "textEmailAddress|textCapCharacters" 값을 사용할 수 있습니다.

2.1.1 EditText를 편집 안되게 만들기. (none)

안드로이드 개발 참고 문서를 보면, EditText를 편집 불가능하도록 만들기 위해 inputType 속성에 "none" 값을 사용한다고 되어 있으나, 리소스 XML 파일에서 EditText의 inputType 속성에 "none" 값을 적용해도 EditText가 편집이 됩니다.

대신, Java 코드에서, inputType 속성에 대응되는 API 함수인 setInputType() 함수를 직접 호출하면 원하는 결과를 얻을 수 있습니다. (EditText에 커서가 사라진 형태)

    EditText editText1 = (EditText)findViewById(R.id.edit1) ;
    editText1.setInputType(0x00000000) ;  // 0x00000000 = none.

2.1.2 일반 텍스트 형식(Plain Text Type) 입력. (text)

EditText의 텍스트가 일반 텍스트 형식을 나타내면, 텍스트 입력기(IME)를 일반 텍스트 입력 모드로 실행되도록 만들 수 있습니다. 이 때 inputType 속성에 기본적으로 "text" 값을 사용합니다.

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:text="" />

일반 텍스트 형식의 텍스트 입력기(IME) 모양


2.1.3 EditText에 문자, 단어, 문장 단위로 대문자 입력하기. (textCapCharacters, textCapWords, textCapSentences)

"textCapCharacters" 값은 영문자 입력 시, 대문자 입력이 기본인 상태로 텍스트 입력기(IME)가 실행되도록 만듭니다. 즉, 쉬프트(Shift) 키가 눌려진 상태로 실행되는 것이죠. 그리고 키보드의 문자를 입력해도 쉬프트(Shift) 눌려짐 상태가 자동으로 해제되지 않습니다. 그러므로 기본적으로 EditText에 입력되는 모든 문자가 대문자로 입력되어야 하는 경우, "textCapCharacters" 값이 유용하게 사용될 수 있습니다. (하지만 사용자가 의도적으로 쉬프트(Shift)키를 누른 경우, 그 순간에는 소문자 입력 상태로 전환됩니다.)

에디트텍스트 대문자 입력 inputType textCapCharacters


"textCapWords" 값은 "textCapCharacters"와 마찬가지로, 텍스트 입력기(IME)가 대문자 입력을 기본으로 실행되도록 만듭니다. 하지만 쉬프트(Shift) 키 눌려짐 상태가 지속적으로 유지되지 않고, 일단 영문자가 입력되면 쉬프트(Shift) 키 눌려짐 상태가 자동으로 해제됩니다. 그리고 스페이스(Space) 키가 눌려지면 쉬프트(Shift) 키가 다시 눌려짐 상태로 전환됩니다. 결과적으로, 단어의 첫 번째 문자만 대문자로 입력하고자 할 때 "textCapWords" 값을 지정할 수 있습니다. 단어를 구분하는 문자에는 스페이스( ), 마침표(.), 물음표(?) 등이 사용됩니다.

에디트텍스트 단어 단위 대문자 입력 inputType textCapWords


"textCapSentences"는 "Sentences"라는 단어가 의미하듯, 문장의 가장 첫 번째 문자만 대문자로 입력할 때 사용할 수 있습니다. 즉, 문장을 입력한 뒤, 문장의 마지막을 의미하는 마침표(.), 물음표(?), 느낌표(!) 등의 문자 뒤에 스페이스(Space)가 입력되면, 새로운 문장으로 인식되어, 쉬프트(Shift) 키가 자동으로 눌려짐 상태로 바뀝니다.

에디트텍스트 문장 단위 대문자 입력 inputType textCapSentences


2.1.4 EditText에 입력되는 단어의 오타 자동 수정하기. (textAutoCorrect)

"textAutoCorrect"는 입력된 단어가 잘 못 입력되었다고 판단될 때, 해당 단어를 자동으로 수정하도록 만들어 줍니다. 입력 단어의 오류 여부에 대한 판단 및 수정될 단어의 선택은 텍스트 입력기(IME)에서 참조하는 단어 데이터베이스에 따라 결정됩니다.

아래 예제는 "tihs"라는 오타를 입력했을 때, "this"로 자동 수정되는 것을 보여줍니다.

에디트텍스트 자동 수정 inputType textAutoCorrect


2.1.5 EditText 입력 텍스트 자동 완성. (textAutoComplete)

"textAutoComplete" 값은 자동 완성 기능을 활성화할 때 사용할 수 있습니다. 하지만 inputType 속성에 "textAutoComplete" 값을 적용해도, 자동완성 기능이 동작하는 것을 확인할 수 없었습니다.

대신, [안드로이드 API 가이드. Text Fields]의 "Providing Auto-complete Suggestions"에 기술된 내용을 통해, AutoCompleteTextView 클래스를 사용하여 자동 완성 기능을 구현하는 방법을 확인할 수 있습니다.

에디트텍스트 AutoCompleteTextView 예제


2.1.6 EditText에 멀티 라인 입력되게 만들기. (textMultiLine, textImeMultiLine)

"textMultiLine" 값은 EditText에 멀티 라인 텍스트를 입력할 수 있게 만듭니다. 하지만 반대로 말하면, inputType 속성을 사용할 때 "textMultiline" 값을 포함시키지 않으면, 멀티 라인 텍스트를 입력할 수 없게 됩니다.

에디트텍스트 멀티 라인 입력 inputType textMultiLine


"textImeMultiLine"은 EditText가 멀티 라인 텍스트 형식이 아니더라도, 텍스트 입력기(IME)는, 가능하다면, 멀티 라인을 제공하도록 만들 때 사용할 수 있습니다.

2.1.7 텍스트 제안(text suggestion) 기능 끄기. (textNoSuggestions)

"textNoSuggestions"은 텍스트 입력기(IME)에서 텍스트 입력 중 표시되는 "단어 제안(Suggestions)" 기능을 끌 때 사용하는 값입니다.

에디트텍스트 텍스트 제안 기능 끄기 inputType textNoSuggestions


2.1.8 URI 형식 텍스트 입력하기. (textUri)

"textUri" 값은 EditText에 URI 형식의 텍스트를 입력받을 때 사용합니다. 기본적인 텍스트 입력기(IME) 실행 형태와 크게 다르지 않지만, "." 또는 ".com" 입력 버튼이 기본적으로 표시된다는 것이 차이점입니다.

edittext_attr_inputType_textUri.png


2.1.9 Email 형식 텍스트 입력하기. (textEmailSubject, textWebEmailAddress, textWebEmailAddress)

"textEmailAddress"는 Email 주소 형식의 텍스트를 입력할 때 설정하는 값입니다. 기본 텍스트 입력 상태에서 "@" 입력 버튼이 기본적으로 표시됩니다.

에디트텍스트 Email 주소 형식 텍스트 입력 inputType textEmailAddress


"textEmailSubject" 값을 사용하면 Email의 제목으로 사용되는 텍스트를 입력할 수 있습니다.

"textWebEmailAddress"는 웹 양식(web form)에서 Email 주소 형식으로 사용될 텍스트를 입력할 때 사용합니다.

2.1.10 문자 메시지(단문 또는 장문) 형식 텍스트 입력하기. (textShortMessage, textLongMessage)

"textShortMessage"는 단문 메시지(short message) 형식의 텍스트를 입력할 때 사용합니다.

"textLongMessage"는 장문 메시지(long message) 형식의 텍스트를 입력할 때 사용합니다.

"textShortMessage"와 "textLongMessage"의 차이점은 액션버튼의 표시 형태에서 나타나는 것을 확인할 수 있었으며, "textShortMessage"의 액션버튼이 이모티콘 입력 버튼으로 표시되었습니다.

2.1.11 사람 이름 입력하기. (textPersonName)

"textPersonName" 값을 사용하면 사람 이름 형식의 텍스트를 입력할 수 있습니다.

2.1.12 우편 주소 입력하기. (textPostalAddress)

"textPostalAddress"는 우편 주소(Postal Address) 형식의 텍스트를 입력할 때 사용합니다.

2.1.13 입력되는 텍스트 감추기. 패스워드 입력. (textPassword, textVisiblePassword, textWebPassword)

"textPassword" 값은 사용자로부터 패스워드를 입력받을 때 사용할 수 있습니다. 즉, 입력되는 텍스트가 입력 문자 그대로 화면에 표시되는 것을 방지하기 위해 사용합니다. 이 때 텍스트 입력기(IME)를 통해 입력되는 문자는 입력된 다음, 약 1초 후 '●'(password dot) 문자로 자동 변경됩니다. "textPassword"는 주로 사용자 로그인 화면에서 패스워드 입력을 위한 EditText에 사용됩니다. (만약 숫자(0~9)만으로 이루어진 패스워드를 입력받고자 하면 "numberPassword" 값을 사용할 수 있습니다.)

에디트텍스트 입력 텍스트 감추기 inputType textPassword


"textVisiblePassword" 값은 패스워드를 위한 텍스트를 입력받는다는 것에서 "textPassword"와 동일하지만, 입력된 패스워드 텍스트가 그대로 표시된다는 차이가 있습니다. 물론, 외부로 표시되지 않아야 할 패스워드가 텍스트 그대로 표시된다는 것이 비정상적으로 보일 수도 있지만, 사용자가 패스워드를 잘못 입력하는 것을 방지하기 위해 사용자 선택 옵션에 따라 텍스트 그대로 노출시키는 경우도 있습니다.

그러면 여기서 한가지 의문인 것은, 굳이 "textVisiblePassword" 값을 별도로 정의하지 않아도 "text" 만으로 패스워드가 텍스트 그대로 표시되도록 만들 수 있지 않은가, 라는 것입니다. 즉, "textVisiblePassword"와 "text"의 차이는 무엇인가, 라는 것인데요.

"textVisiblePassword"는 "text"처럼 입력 텍스트를 그대로 표시하지만, 그 외 몇 가지 텍스트 입력기(IME)의 편의 기능이 다르게 동작합니다. 먼저, 입력된 텍스트 내용을 텍스트 입력 기록에 남기지 않습니다. 한번 입력된 텍스트를 나중에 다시 입력할 때 편하게 입력할 수 있도록 입력 기록에 저장하는 경우가 있는데, "textVisiblePassword"을 사용하면 입력 기록에 저장하지 않는 것이죠. 이로 인해 자동 완성(Auto Complete)을 위한 데이터베이스에도 저장되지 않습니다. 그리고 텍스트 입력기(IME)의 단어 추천(Suggestion) 기능 또한 자동으로 비활성화됩니다. 마지막으로 에모지(Emoji) 입력 버튼이 이모티콘 입력 버튼으로 변경됩니다.

에디트텍스트 inputType text와 textVisiblePassword의 차이점


"textWebPassword"는 웹 양식(web form)에서 패스워드로 사용될 텍스트를 입력할 때 사용합니다.

2.1.14 web form 텍스트 형식 입력하기. (textWebEditText)

"textWebEditText" 값은 웹 양식(web form)에서 제공되는 텍스트를 입력받을 때 사용됩니다.

2.1.15 필터링(filtering) 용도로 사용되는 텍스트 입력하기. (textFilter)

"textFilter" 값은 다른 데이터를 필터링(filtering)하는 용도로 사용되는 텍스트를 입력할 때 사용합니다. 그래서 텍스트 제안(text suggestion) 기능이 자동적으로 off된 상태로 텍스트 입력기(IME)가 실행됩니다.

2.1.16 발음기호 입력하기. (textPhonetic)

"textPhonetic" 는 발음을 위한 텍스트를 입력받을 때 사용됩니다. (연락처의 발음 이름 필드)

2.1.17 숫자 입력하기. (number, numberSigned, numberDecimal)

"number" 값은 EditText에 입력되는 텍스트가 숫자(정수)로만 구성될 때 사용할 수 있는 값입니다. 즉, 텍스트 입력기(IME)에서 0~9 사이의 문자만 입력 가능합니다. 그리고 음수를 위한 -(minus), 소수점을 위한 .(dot) 문자도 입력되지 않습니다.

에디트텍스트 숫자 입력하기 inputType number

"numberSigned" 는 "number"와 같이 숫자(정수) 형식의 텍스트를 입력하되, 음수도 입력할 수 있게 해줍니다. 즉, EditText의 최초 입력 문자로 -(minus) 문자가 사용될 수 있고, 그 다음부터 0~9 사이의 문자가 입력 가능합니다. 소수점 입력을 위한 .(dot)은 여전히 입력 불가능합니다.

에디트텍스트 음수 입력하기 inputType numberSigned

"numberDecimal" 은 10진수 숫자를 입력할 때 사용하며, 소수점 입력이 가능합니다. 하지만 음수 값은 입력이 불가능합니다.

에디트텍스트 소수점 입력하기 inputType numberDecimal

만약 음수로 된 소수점 값을 입력하고자 하면, inputType 속성에 "numberSigned"와 "numberDecimal"을 같이 지정하면 됩니다.

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="numberSigned|numberDecimal"
        android:text="" />
2.1.18 숫자 암호 입력하기. (numberPassword)

"numberPassword"는 숫자 0~9 로만 구성된 패스워드를 입력할 때 사용되며, "textPassword"의 숫자 버전이라고 볼 수 있습니다. 즉, 텍스트 입력기(IME)를 통해 입력되는 0~9 사이의 문자는 입력되고 난 뒤, 약 1초 후 '●'(password dot) 문자로 자동 변경됩니다.

에디트텍스트 숫자 암호 입력하기 inputType numberPassword


2.1.19 전화번호 입력하기. (phone)

"phone" 값은 전화번호 형식의 텍스트를 입력할 때 사용하는 값입니다.

에디트텍스트 전화번호 입력하기 inputType phone


여기서 입력할 수 있는 값은, 일반적으로 전화번호에 사용되는 0~9, *, # 등의 문자 뿐만 아니라, +, -, . 등 전화 시스템에서 특수한 목적으로 사용되는 문자까지 포함됩니다.

2.1.20 날짜 및 시간 입력하기. (datetime, date, time)

"datetime"은 날짜와 시간 형식의 텍스트를 입력할 때 사용합니다. 이 때 사용 가능한 문자는 0~9, /, -, : 등입니다. 즉, "datetime" 값을 사용하면, "2013/12/09 19:48:00" 이나 "2013-12-09 19:48:00" 같은 형식의 날짜 시간 텍스트를 입력할 수 있습니다. 하지만 입력 가능한 문자만 허용할 뿐, 입력 값에 대한 정확성 검증이나 자동 수정은 수행하지 않습니다.

에디트텍스트 날짜 시간 입력하기 inputType datetime


"date" 값은 날짜 형식의 텍스트를 입력할 때 사용할 수 있습니다. 사용 가능한 문자는 0~9, /, ., - 입니다.

에디트텍스트 날짜 입력하기 inputType date


"time" 값은 시간 형식의 텍스트를 입력할 때 사용합니다. 사용 가능한 문자는 0~9, : 입니다.

에디트텍스트 시간 입력하기 inputType time


3. 참고.

.END.


ANDROID 프로그래밍/EDITTEXT