2017-02-06 5 views
0

하나의 도움이 필요합니다. 프로그래밍 방식으로 Google Softkeyboard에서 번호를 숨기고 싶습니다.이 링크 http://www.androidcentral.com/how-add-dedicated-number-row-google-keyboard을 볼 수 있듯이 CapsLock에서만 문자를 보내고 싶습니다. 원하지 않아.프로그래밍 방식으로 Google softkeyboard에 표시되는 번호를 숨기는 방법

나는 시도 : 나는 사용자가 Z 만 문자 A를 입력 할 필요

edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()}); // for making capslock on 

<EditText 
       android:id="@+id/firstName" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textCapCharacters" 
       android:maxLength="10"/> 

을 여전히 수는 보여주고 사용자가되어 내가 필요로하지 않는, 또한 번호를 입력 할 수

사용자가 숫자를 입력 할 수 없지만 대문자가 표시되지 않는 솔루션을 발견했습니다 (소프트 키 보드에 Caps ON).

다음은 솔루션입니다. 이제 저에게 도움이되었습니다. Everyone에 감사드립니다. 그 입력 문자열은 자바 파일에서 혼자

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 


public class AlphabetValidator { 

private Pattern pattern; 
private Matcher matcher; 

public static final String ALPHABET_PATTERN = "^[a-zA-Z]+[\\p{L} .'-]*$"; 

public AlphabetValidator() { 
    pattern = pattern.compile(ALPHABET_PATTERN); 
} 

/** 
* Validate hex with regular expression 
* 
* @param hex hex for validation 
* @return true valid hex, false invalid hex 
*/ 
public boolean validate(final String hex) { 

    matcher = pattern.matcher(hex); 
    return matcher.matches(); 
} 
} 

알파벳입니다 유효성에 대한 검증을위한

edittext.setFilters(new InputFilter[] { 
    new InputFilter() { 
     public CharSequence filter(CharSequence src, int start, 
       int end, Spanned dst, int dstart, int dend) { 
      if(src.equals("")){ // for backspace 
       return src; 
      } 
      if(src.toString().matches("[A-Z ]+")){ 
       return src; 
      } 
      return ""; 
     } 
    } 
}); 
<EditText 
       android:id="@+id/firstName" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textCapCharacters" 
       android:maxLength="10"/> 
+0

'onTextChangedListener'에서 텍스트가 변경된 후 숫자를 비워 둘 수 있습니다. –

+0

사용자가 아무 것도 쓸 수는 없지만''^ [AZ] + "'와 같은 정규 표현식으로 검사 할 수 있다고 생각합니다 –

+0

사용자가 키보드를 설치하면 키보드에 표시된 내용을 제어 할 수 없으며, @DheerubhaiBansal은 사용자가 작성한 것을 확인하고 처리 할 수 ​​있다고 말했다. – RadekJ

답변

0

private AlphabetValidator alphabetValidator; 

    //after submission check 

    if (!alphabetValidator.validate(fieldname.getText().toString())) { 
         fieldname.setError("Error message"); 
         fieldname.requestFocus(); 
        } 
+0

하지만 사용자는 숫자도 입력 할 수 있으며, 사용자 유형 번호가 표시 될 때만 오류 메시지가 표시됩니다. 원하지 않습니다. 숫자가 Google 키보드에서 숨겨져 있거나 번호를 입력 할 수 없습니다. –

+0

[this] (https://developer.android.com/training/keyboard-input/style.html) 도움이 될 수 있습니다. –

0

첫 번째 방법을 포함한다 : - 귀하의 EditText에 설정 android:inputType="textCapSentences".

하지만 기기 키보드의 자동 대문자 사용 설정이 사용 설정된 경우에만 작동합니다.

두 번째 방법 : -는 사용할 수 InputFilters 프로그램

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

업데이트 답변 : 가 추가로 글고 태그에이 줄을보십시오.

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 

희망이 있으면 도움이 될 것입니다.

+0

둘 다 사용했지만 여전히 숫자가 나타납니다. –