Kullanıcı adımı doldurup ardından parolama gittiğimde, klavyede "Bitti" ye bastığımda giriş formunun otomatik olarak gönder düğmesine tıklamama gerek kalmadan gönderildiği bazı uygulamaları kullandım. Bu nasıl yapılır?
Kullanıcı adımı doldurup ardından parolama gittiğimde, klavyede "Bitti" ye bastığımda giriş formunun otomatik olarak gönder düğmesine tıklamama gerek kalmadan gönderildiği bazı uygulamaları kullandım. Bu nasıl yapılır?
Yanıtlar:
Bunu dene:
Düzeninize şunu koyun / düzenleyin:
<EditText
android:id="@+id/search_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:singleLine="true"
android:imeOptions="actionDone" />
Aktivitenize şunu yazın (örneğin onCreate'e):
// your text box
EditText edit_txt = (EditText) findViewById(R.id.search_edit);
edit_txt.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
submit_btn.performClick();
return true;
}
return false;
}
});
submit_btnOnclick işleyiciniz eklenmiş olarak gönder düğmeniz nerede .
submit_btn.performClick();gözlerimi yakıyor Srsly? Neden gönderme yöntemini çağırmıyorsunuz?
imeActionLabeltüm bu davranışı devre dışı bırakıyordu. Dikkat edin
IME Seçeneklerini cihazınızda ayarlamanız gerekir EditText.
<EditText
android:id="@+id/some_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Whatever"
android:inputType="text"
android:imeOptions="actionDone" />
Daha sonra OnEditorActionListener, "tamamlandı" eylemini dinlemek için görünüme bir ekleyin .
EditText editText = (EditText) findViewById(R.id.some_view);
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_DONE) {
// TODO do something
handled = true;
}
return handled;
}
});
Resmi API belgesi: https://developer.android.com/guide/topics/ui/controls/text.html#ActionEvent
Uzatın EditText:
fun EditText.onSubmit(func: () -> Unit) {
setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
func()
}
true
}
}
Ardından yeni yöntemi şu şekilde kullanın:
editText.onSubmit { submit() }
submit()Böyle bir şey nerede :
fun submit() {
// call to api
}
fun EditText.on(actionId: Int, func: () -> Unit) {
setOnEditorActionListener { _, receivedActionId, _ ->
if (actionId == receivedActionId) {
func()
}
true
}
}
Ardından, etkinliğinizi dinlemek için kullanabilirsiniz:
email.on(EditorInfo.IME_ACTION_NEXT, { confirm() })
Bu nasıl yapılır
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_DONE){
//do something
}
return false;
}
});
Aşağıdakileri eklemeyi unutmayın
<EditText android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:imeOptions="actionDone"/>
EditText'inizde actionDone.
XML dosyanızda edittext etiketinizin içine aşağıdaki snippet'i ekleyin
android:imeOptions="actionDone"
Sonra Java sınıfınızın içine aşağıdaki kodu yazın
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int id, KeyEvent event) {
if (id == EditorInfo.IME_ACTION_DONE) {
//do something here
return true;
}
return false;
}
});
edittext'e aşağıdaki satırı ekleyin
android:imeOptions="actionDone"
Mutlu kodlama
etParola = (EditText) findViewById(R.id.etParola);
btnGiris = (Button) findViewById(R.id.btnGiris);
etParola.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
btnGiris.performClick();
return true;
}
return false;
}
});
and;
layout xml etParola
android:imeOptions="actionDone" add
Sadece bu cevabı uzat
fun EditText.onSubmit(func: () -> Unit) {
setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
clearFocus() // if needed
hideKeyboard()
func()
}
true
}
}
fun EditText.hideKeyboard() {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(this.windowToken, 0)
}
EditText edit_txt = (EditText) findViewById(R.id.search_edit);
edit_txt.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
// which is u had set a imeoption
if (actionId == EditorInfo.IME_ACTION_DONE) {
submit_btn.performClick();
return true;
}
return false;
}
});
<EditText
android:id="@+id/signinscr_userName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/userName"
android:imeOptions="actionNext" />
<EditText
android:id="@+id/signinscr_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:imeOptions="actionDone"
android:inputType="textPassword" />
java dosyasında
EditText userNameField = (EditText) findViewById(R.id.signinscr_userName);
EditText passwordField = (EditText) findViewById(R.id.signinscr_password);
passwordField.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
//Do your operation here.
return false;
}
});