Yanıtlar:
Android aslında sadece bunun için yerleşik bir InputFilter var !
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
Dikkatli olun, setFilters
tüm diğer özelliklerini sıfırlar XML yoluyla belirlenmiştir (yani maxLines
, inputType
, imeOptinos
...). Bunu önlemek için, mevcut filtrelere filtre ekleyin.
InputFilter[] editFilters = <EditText>.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = <YOUR_FILTER>;
<EditText>.setFilters(newFilters);
maxLength
) için ayarladığınız filtrelerin geçersiz kılınmasını önlemek için , InputFilter.AllCaps()
to editText.getFilters
dizisini eklemeyi deneyin . Bkz. Stackoverflow.com/a/18934659/3890983
editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
Kotlin harika! <3
Kullanıcıyı EditText'inizde varsayılan olarak büyük harflerle yazmaya zorlamak istiyorsanız , eklemeniz yeterlidir android:inputType="textCapCharacters"
. (Kullanıcı yine de manuel olarak küçük harfe dönüşebilir.)
Set input type
için TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
. keyboard
Bu onur.
İki şekilde kullanabilirsiniz.
İlk Yol:
android:inputType="textCapSentences"
EditText üzerinde ayarlayın .
İkinci Yol:
Kullanıcı numarayı girdiğinde, metin izleyiciyi kullanmanız ve küçük harf olarak büyük harfe değiştirmeniz gerekir.
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
edittext.setSelection(edittext.length()); //fix reverse texting
}
}
});
Ekleyebilir android:textAllCaps="true"
EditText içinde xml dosyasına özelliği. Bu, yumuşak giriş klavyesinin tüm büyük harf modunda görünmesini sağlar. Girdiğiniz değer Büyük Harf'te görünecektir. Ancak bu, kullanıcının yalnızca UpperCase
harf girebilmesini sağlamaz . Eğer isterse, yine de küçük harflere geri dönebilirler. Edittext
Çıkışının Tümü büyük harf olduğundan emin olmak istiyorsanız toUpperCase()
, String
sınıf yöntemini kullanarak giriş Dizesini el ile dönüştürmeniz gerekir .
android:textAllCaps="true"
yalnızca TextView özelliğidir ( stackoverflow.com/a/28803492/5268730 ). android:inputType="textCapCharacters"
Bunun yerine kullanın .
Sen koymalıyız android:inputType="textCapCharacters"
xml dosyasında EditText ile.
Klavyeyle uğraşmaktan endişe etmek yerine, neden sadece herhangi bir giriş, küçük harf veya büyük harf kabul etmiyor ve dizeyi büyük harfe dönüştürmüyorsunuz?
Aşağıdaki kod yardımcı olacaktır:
EditText edit = (EditText)findViewById(R.id.myEditText);
String input;
....
input = edit.getText();
input = input.toUpperCase(); //converts the string to uppercase
Bu kullanıcı dostudur, çünkü kullanıcının dizgeye büyük harfle ihtiyacınız olduğunu bilmesine gerek yoktur. Bu yardımcı olur umarım.
Daha da iyisi ... bir liner içinde KOTLIN ...
// gets your previous attributes in XML, plus adds AllCaps filter
<your_edit_text>.setFilters(<your_edit_text>.getFilters() + InputFilter.AllCaps())
Bitti!
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
In KOTLIN , .kt dosya marka değişiklikler:
edit_text.filters = edit_text.filters + InputFilter.AllCaps()
Kimliğine sahip widget'ın doğrudan erişimi için sentetik özelliği kullanın. Ve XML'de, düzenleme metniniz için birkaç bayrak ekleyin:
<EditText
android:id="@+id/edit_text_qr_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...other attributes...
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
Bu, klavyeyi büyük harf etkin olarak güncelleyecektir.
Giriş filtresini kullan
editText = (EditText) findViewById(R.id.enteredText);
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
}
editText.setSelection(editText.getText().length());
}
});
Sadece bunu yap:
// ****** Every first letter capital in word *********
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
/>
//***** if all letters are capital ************
android:inputType="textCapCharacters"
Benim için android ekleyerek çalıştı : textAllCaps = "true" ve android: inputType = "textCapCharacters"
<android.support.design.widget.TextInputEditText
android:layout_width="fill_parent"
android:layout_height="@dimen/edit_text_height"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
Tüm büyük harfleri elde etmek için XML'nizde aşağıdakileri kullanın:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
Kabul edilen cevaba dayanarak, bu cevap aynı şeyi yapar, ancak Kotlin'de. Sadece kopya yapıştırma işlemini kolaylaştırmak için: ·)
private fun EditText.autocapitalize() {
val allCapsFilter = InputFilter.AllCaps()
setFilters(getFilters() + allCapsFilter)
}
filters += InputFilter.AllCaps()
: D
Metni düzenle'yi tıkladığınızda büyük harfli klavye almak için xml'nizde bu kodu kullanın,
<EditText
android:id="@+id/et"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="Input your country"
android:padding="10dp"
android:inputType="textCapCharacters"
/>
Uygulamamı Android 5.1 ve Android 6.0 (her ikisinde de aynı apk yüklü) için Visual Studio 2015 / Xamarin kullanıyorum.
android:inputType="textCapCharacters"
Axml'de belirttiğimde , AllCaps klavye Android 6.0'da beklendiği gibi göründü, ancak Android 5.1'de görünmedi. Eklediğim android:textAllCaps="true"
Android 5.1 benim axml ve hala AllCaps klavyesine. Kullanarak bir filtre ayarladım EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
ve yazılım klavyesi Android 5.1'de küçük harfler gösterirken, giriş alanı artık AllCaps.
EDIT: Gözlemlediğim ve işletim sistemi ile ilgili olduğunu düşündüğüm davranışsal farklılıklar aslında test cihazlarında Google Klavye'nin farklı sürümlerine sahip olmamdı. Cihazları en son Google Klavye'ye güncelledikten sonra (bu yazıdan Temmuz 2016'da yayınlandı), 'Tümü Büyük Harfler' davranışı işletim sistemlerinde tutarlıydı. Şimdi, tüm cihazlar klavyede küçük harfler gösteriyor, ancak giriş nedeniyle Tümü Büyük HarfSetFilters(new IInputFilter[] { new InputFilterAllCaps() });
ErlVolton'un cevabının Xamarin eşdeğeri:
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
Basitçe, xml dosyanızın EditText'ine aşağıdaki kodu ekleyin.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Hem büyük harf hem de rakamlara izin vermek istiyorsanız aşağıdaki kodu kullanın.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
olsa olmalı .