Sadece bir karakter ve sadece karakter (harf/alfa) kabul eden bir EditText
yapmam gerekiyor. Ve eğer kullanıcı diğer karakterleri girerse, mevcut olanı değiştirmelidir (izin verilen 1 sembol ile metin girişi üzerine yazma yöntemi gibi).EditText'te sadece 1 karaktere izin verin ve kullanıcı girdiğinde her zaman üzerine yazın
Özelliklerin metnin maksimum uzunluğunu nasıl ayarlayacağımı biliyorum. Ancak değerini 1 olarak ayarlarsanız, kullanıcı mevcut bir silmeden önce başka bir char eklenemez. Fakat mevcut char'i manuel olarak silme işlemine gerek duymadan yeni girilen ile değiştirmek istiyorum. Bu nasıl yapılır?
Yalnızca
EditText
numaralı haldeki basamaklara izin vermek için özelliği nasıl ayarlayacağımı biliyorum, ancak I yalnızca karakterlerin nasıl izin verileceğini öğrenemiyor. Yani ikinci soru sadeceEditText
içinde karakterlere nasıl izin verilir?
anda Aşağıdaki kod ile maksimum metin boyutu = 2 olan bir EditText
kullanıyorum:
final EditText editLetter = (EditText)findViewById(R.id.editHouseLetter);
editLetter.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s!=null && s.length()>1){
editLetter.setText(s.subSequence(1, s.length()));
editLetter.setSelection(1);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
nokta, bir kullanıcı, ikinci kömürü girdiğinde, ilk silinmelidir . Metin boyutu 2'ye ayarlandığında, kullanıcının daha önce girildikten sonra başka bir karakter girmesi sağlanır.
Gerçekten nasıl çalıştığını anlamıyorum ama yapıyor :). Ve ek olarak EditText
numaralı imleci son noktaya işaret etmem gerekti çünkü her zaman bir şey girmeyi başaramayacak şekilde başlıyor. Neden bu da olmadı.
Bu çözümün ana noktası, EditText
boyutunda bir 2 karakterlik alana sahip olması, ancak 1 boyutlu boyutta olmasını istiyorum. Ve harflerin (chars/alpha) yanı sıra herhangi bir şey girmeye izin verir ve ben chars dışında bir şey istiyorum.
public void afterTextChanged(Editable s) {
int iLen=s.length();
if (iLen>0 && !Character.isLetter((s.charAt(iLen-1)))){
s.delete(iLen-1, iLen);
return;
}
if (iLen>1){
s.delete(0, 1);
}
}
Ben Selection.setSelection
kullanarak bu durumda gerekli olmadığını fark ettik: sgarman ve Character.isLetter()
işlevi tarafından sağlanan tavsiye kullanarak
, afterTextChanged
yöntem şimdi bu şekilde görünüyor. Şimdi sadece harflerin girilmesine izin veren bir filtreye sahip. Neredeyse istediğim cevap. Tek bir şey, 1 sembol boyutunda EditText
ile nasıl yapılacağıdır?
tam olarak aynıdır. uzunluk = 1 ile hiç çalışmıyor. ET (editLetter) için bir bağlantı kullanmadan sadece alternatif bir yoldur. Bahşiş için teşekkürler ama cevap değil. – Stan
@Stan neden bunu kabul ettiniz ;-) –
Lütfen sorumu tamamen okuyun ve nedenini bulacaksınız. – Stan