프로그래밍 방식으로 EditText 숫자 설정


86

본질적으로 EditText의 숫자 값을 프로그래밍 방식으로 설정하려고합니다. 지금까지 :

weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());

괜찮지 만 소수 자리 (.)도 포함 할 수 있기를 원합니다. 어떤 아이디어?


1
당신은 아마 사용하는 것을 선호 DialerKeyListener대신에DigitsKeyListener
드미트리 Gryazin

답변:


206

이 시도:

<EditText
    android:inputType="number"
    android:digits="0123456789."
/>

코드에서 :

weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789."));

그러나 사용자는 여러 "."를 포함 할 수 있습니다. 실수에 대한 JoeyRA 의 답변을 참조하십시오 .


괜찮지 만 프로그래밍 방식으로 수행하고 싶습니다. 그 이유는이 숫자가 지속적으로 변하는 유일한 변수이기 때문에 여러 상황에서 하나의 레이아웃을 재사용하고 싶기 때문입니다. 내 상황에서는 코드에서하는 것이 훨씬 더 효과적입니다.
ryandlf 2011 년

2
감사. 이 답변은 내가 요청한 내용에 따라 다르기 때문에 실제로 확인 표시가 필요하다고 생각하지만 두 솔루션 모두 작동합니다.
ryandlf 2011 년

@feresr, 그보고 있기 때문에, 이상한 TextView소스 : // If no input type was specified, we will default to generic text, since we can't tell the IME about the set of digits that was selected.
드미트리 Gryazin

.9시 이후 의 용도는 무엇입니까 ?
Mitesh Shah

1
@MiteshShah 소수점 자리를 허용합니다.
masterwok

30

이 시도:

weightInput.setInputType(InputType.TYPE_CLASS_NUMBER);          
weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);           
weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));

public static DigitsKeyListener getInstance (boolean sign, boolean decimal) 

지정된 경우 0부터 9까지의 숫자와 빼기 기호 (시작 부분 만) 및 / 또는 소수점 (필드 당 하나만)을 허용하는 DigitsKeyListener를 반환합니다.

이것은 많은 '.'에 대한 문제를 해결합니다. EditText에서


1
설명 만 추가하면됩니다. editText.setKeyListener (DigitsKeyListener.getInstance (true, true)); 소수와 음수를 활성화합니다. editText.setKeyListener (DigitsKeyListener.getInstance (false, true)); 양의 십진수 만 활성화합니다. editText.setKeyListener (DigitsKeyListener.getInstance (false, false)); 양의 정수만 활성화합니다.
SerSánGal 2015

8
질문 : setInputType몇 번이고 반복 한다면 두 번째 것부터 첫 번째 것보다 우선하지 않습니까? 난 당신이 사용한다고 생각 weightInput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);하지만 난 100 % 확실하지 않다
라파엘 루이스 무 노즈

20

사용 InputType.TYPE_NUMBER_FLAG_DECIMAL.

참조 : 입력 유형 .


-1? 나는 확실히 그렇게하지 않았다. 귀하의 솔루션이 작동했습니다. 감사합니다.
ryandlf 2011 년

되 돌린 것 같습니다. 기꺼이 도와 드리겠습니다.
Ricky

4

IP 주소 입력 용 (여러 점과 숫자)

시험

<EditText
    android:id="@+id/ipBox"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/ipAddrHint"
    android:inputType="numberDecimal|number"
    android:digits="0123456789."
    android:textSize="30sp" />

1
16 진수 IP 주소 (0x로 시작하는 부분 포함)도 유효하며 IP 주소 대신 도메인 이름을 사용할 수 있습니다.
Triang3l 2013 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.