teclado sugerencias studio programacion móviles muestra los google gboard emojis desarrollo curso configurar como cambiar aplicaciones activar android keyboard-events android-softkeyboard

android - studio - gboard no muestra sugerencias



Android Use el botón Hecho en el teclado para hacer clic en el botón (9)

Ok, en mi aplicación, tengo un campo para que el usuario ingrese un número. Tengo el campo configurado para solo aceptar números. Cuando el usuario hace clic en el campo, abre el teclado. En el teclado (en ICS) hay un botón hecho. Me gustaría que el botón hecho en el teclado active el botón de enviar que tengo en mi aplicación. Mi código es el siguiente.

package com.michaelpeerman.probability; import android.app.Activity; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.util.Random; public class ProbabilityActivity extends Activity implements OnClickListener { private Button submit; ProgressDialog dialog; int increment; Thread background; int heads = 0; int tails = 0; public void onCreate(Bundle paramBundle) { super.onCreate(paramBundle); setContentView(R.layout.main); submit = ((Button) findViewById(R.id.submit)); submit.setOnClickListener(this); } public void onClick(View view) { increment = 1; dialog = new ProgressDialog(this); dialog.setCancelable(true); dialog.setMessage("Flipping Coin..."); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setProgress(0); EditText max = (EditText) findViewById(R.id.number); int maximum = Integer.parseInt(max.getText().toString()); dialog.setMax(maximum); dialog.show(); dialog.setOnCancelListener(new OnCancelListener(){ public void onCancel(DialogInterface dialog) { background.interrupt(); TextView result = (TextView) findViewById(R.id.result); result.setText("heads : " + heads + "/ntails : " + tails); }}); background = new Thread(new Runnable() { public void run() { heads=0; tails=0; for (int j = 0; !Thread.interrupted() && j < dialog.getMax(); j++) { int i = 1 + new Random().nextInt(2); if (i == 1) heads++; if (i == 2) tails++; progressHandler.sendMessage(progressHandler.obtainMessage()); } } }); background.start(); } Handler progressHandler = new Handler() { public void handleMessage(Message msg) { dialog.incrementProgressBy(increment); if (dialog.getProgress() == dialog.getMax()) { dialog.dismiss(); TextView result = (TextView) findViewById(R.id.result); result.setText("heads : " + heads + "/ntails : " + tails); } } }; }


Copié el siguiente código de AndroidStudio cuando creas una LoginActivity. Yo uso los atributos de Ime

En tu diseño

<EditText android:id="@+id/unidades" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/prompt_unidades" android:inputType="number" android:maxLines="1" android:singleLine="true" android:textAppearance="?android:textAppearanceSmall" android:enabled="true" android:focusable="true" android:gravity="right" android:imeActionId="@+id/cantidad" android:imeActionLabel="@string/add" android:imeOptions="actionUnspecified"/>

En tu actividad

editTextUnidades.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == R.id.cantidad || actionId == EditorInfo.IME_NULL) { addDetalle(null); return true; } return false; } });


Prueba esto con Xamarin.Android (Cross Platform)

edittext.EditorAction += (object sender, TextView.EditorActionEventArgs e) { if (e.ActionId.Equals (global::Android.Views.InputMethods.ImeAction.Done)) { //TODO Something } };


Prueba esto:

max.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event){ if(keyCode == event.KEYCODE_ENTER){ //do what you want } } });


Puede implementar en el oyente de claves:

public class ProbabilityActivity extends Activity implements OnClickListener, View.OnKeyListener {

En onCreate:

max.setOnKeyListener(this);

...

@Override public boolean onKey(View v, int keyCode, KeyEvent event){ if(keyCode == event.KEYCODE_ENTER){ //call your button method here } return true; }


Puedes probar con IME_ACTION_DONE .

Esta acción realiza una operación "finalizada" para que no ingrese nada y el IME se cerrará.

Your_EditTextObj.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; if (actionId == EditorInfo.IME_ACTION_DONE) { /* Write your logic here that will be executed when user taps next button */ handled = true; } return handled; } });


También puede usar este (establece un oyente especial para ser llamado cuando se realiza una acción en EditText), funciona tanto para DONE como para RETURN:

max.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) { Log.i(TAG,"Enter pressed"); } return false; } });


Usa esta clase en tu diseño:

public class ActionEditText extends EditText { public ActionEditText(Context context) { super(context); } public ActionEditText(Context context, AttributeSet attrs) { super(context, attrs); } public ActionEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection conn = super.onCreateInputConnection(outAttrs); outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; return conn; }

}

En xml:

<com.test.custom.ActionEditText android:id="@+id/postED" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@android:color/transparent" android:gravity="top|left" android:hint="@string/msg_type_message_here" android:imeOptions="actionSend" android:inputType="textMultiLine" android:maxLines="5" android:padding="5dip" android:scrollbarAlwaysDrawVerticalTrack="true" android:textColor="@color/white" android:textSize="20sp" />


Su último Edittext .setOnEditorActionListener llama a este método api de hit automático

Me llamaron en LoginActivity en et_password

et_Pass.setOnEditorActionListener(new TextView.OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) { Log.i(TAG,"Enter pressed"); Log.i(Check Internet," and Connect To Server"); } return false; } });

Funcionando bien


max.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event){ if(keyCode == event.KEYCODE_ENTER){ //do what you want } } });