2011-01-22 3 views
2

나는 EditText 상자와 안드로이드 응용 프로그램에서 일하고 있어요. 이 상자에 사용자가 통화를 입력하길 원합니다.어떻게 EditText 상자 입력을 소수점 이하 두 자로 제한 할 수 있습니까?

이미 편리한 안드로이드를 사용하여 숫자와 소수에 키보드가 제한

: (inputType = "numberDecimal"을하지만 난이 소수점 이하 두 개 이상의 숫자를 입력에서 사용자를 중지 할 수 있도록하고 싶습니다 그래서 콘텐츠는 통화로 저장되며 또한 사용자가 입력하는 내용에 대해 사용자가 분명히 중요하다고 생각하기 때문에).

그러나 프로그래밍 경험이별로 없으며 어디서부터 시작해야할지 모르겠습니다. (유효성 검사는 꽤 큰 주제입니다. 하하). 검색 좀하고 InputFilter 클래스의 내 확장 기능을 만들어야하는 것처럼 들리지만 나는 그것에 대해 갈 방법 또는 더 좋은 방법이 있는지 모르겠습니다. 그래서 어떤 충고라도 정말 감사 할 것입니다!

+0

숫자 형식이 어쩌면 onTextChange 감시자에 적용 할 수있는 시도? – Holly

답변

2
+0

그래, 그게 내가 생각하고 있었던거야. 내 수업을 직접 만들어야 겠어? 나는 이런 식으로 내 자신의 방법을 쓰는 방법에 대해 확신하지 못합니다. 어떤 예를 알고 있다고 생각하지 않거나 시작하는 법을 설명 할 수는 없습니까? 어쨌든 고마워요 – Holly

+0

여기에 예제가 있습니다 : http://stackoverflow.com/questions/3349121/how-do-i-use-inputfilter-to-limit-characters-in-an-edittext-in-android CharacterSequence는 좀 더 복잡합니다. 그러나 EditText를위한 InputFilter의 기본 구현은 모두 거기에 있습니다. –

-1

소수점 그냥 다음 코드를 사용하여 이후에 두 개 이상의 숫자를 입력하지에서 사용자를 제한합니다.

myEditText1 = (EditText) findViewById(R.id.editText1); 
myEditText1.setInputType(3); 

숫자 '3'이 트릭입니다. 도움이 되었기를 바랍니다.

0

editText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)}); 

DecimalDigitsInputFilter

public class DecimalDigitsInputFilter implements InputFilter { 
    Pattern mPattern; 
    public DecimalDigitsInputFilter(int digitsAfterZero) { 
     mPattern=Pattern.compile("[0-9]+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?"); 
    } 
    @Override 
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 

     Matcher matcher=mPattern.matcher(dest);  
     if(!matcher.matches()) 
      return ""; 
     return null; 
    } 
} 
+2

edittext에 이미 10 진수가 있으면이 논리로 인해 텍스트가 추가되지 않습니다. Example 1.45는 11.45와 같은 새로운 텍스트를 입력 할 수 없습니다. – Matthew

관련 문제