Çoğu insan soruyu doğrudan cevaplasa da, arkasındaki kavram hakkında daha fazla ayrıntı vermek istedim. İlk olarak, varsayılan bir Giriş Etkinliği oluşturduğumda IME'nin dikkatine çekildim. Aşağıdakileri içeren benim için bir kod üretti:
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"/>
İnputType özniteliğine zaten aşina olmalısınız. Bu, Android'e e-posta adresi, şifre veya telefon numarası gibi beklenen metin türünü bildirir. Olası değerlerin tam listesi burada bulunabilir .
Ancak, imeOptions="actionUnspecified"
amacını anlamadığım özellikti . Android, kullanılarak metin seçildiğinde ekranın alt kısmından açılan klavyeyle etkileşime girmenizi sağlar InputMethodManager
. Klavyenin alt köşesinde, geçerli metin alanına bağlı olarak genellikle "İleri" veya "Bitti" yazan bir düğme bulunur. Android bunu kullanarak özelleştirmenizi sağlar android:imeOptions
. Bir "Gönder" düğmesi veya "İleri" düğmesi belirleyebilirsiniz. Tam liste burada bulunabilir .
Bununla TextView.OnEditorActionListener
, EditText
eleman için bir tanımlayarak eylem düğmesine basmayı dinleyebilirsiniz . Örneğinizde olduğu gibi:
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do here your stuff f
return true;
}
return false;
}
});
Şimdi benim örneğimde android:imeOptions="actionUnspecified"
sıfat vardı . Bu, enter tuşuna bastığında kullanıcı oturum açmayı denemek istediğinizde kullanışlıdır. Etkinliğinizde bu etiketi tespit edebilir ve ardından giriş yapmayı deneyebilirsiniz:
mPasswordView = (EditText) findViewById(R.id.password);
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
if (id == R.id.login || id == EditorInfo.IME_NULL) {
attemptLogin();
return true;
}
return false;
}
});