Método setOnEditorActionListener de Android EditText: monitorear las teclas del teclado virtual

1. Uso del método setOnEditorActionListener del control EditText

El método setOnEditorActionListener no se activa cuando hacemos clic en EditText, ni tampoco cuando editamos EditText, pero se activa cuando hacemos clic en varias teclas del teclado en pantalla después de terminar de editar.

A través de imeOptions en el archivo de diseño , puede controlar los botones en la esquina inferior derecha del disco de software para que se muestren como botones diferentes. Por lo tanto, cuando se combina con EditorInfo, se pueden realizar varias funciones de teclado virtual.
imeOptions=”actionUnspecified” –> EditorInfo.IME_ACTION_UNSPECIFIED
imeOptions=”actionNone” –> EditorInfo.IME_ACTION_NONE
imeOptions=”actionGo” –> EditorInfo.IME_ACTION_GO
imeOptions=”actionSearch” –> EditorInfo.IME_ACTION_SEARCH
imeOptions=”actionSend” –> EditorInfo.IME_ACTION_SEND
imeOptions=”actionNext” –> EditorInfo.IME_ACTION_NEXT
imeOptions=”actionDone” –> EditorInfo.IME_ACTION_DONE

Definir un control EditText en el diseño

 <EditText
        android:id="@+id/ET_phonenumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/buttonAdd"
        android:hint="@string/enter_new_note" 
        android:imeOptions="actionDone"// 这里和onEditorAction中actionId对应。
        android:inputType="text"/>

Agregar el método setOnEditorActionListener

ET_phonenumber.setOnEditorActionListener(new OnEditorActionListener() {
    
      
            @Override  
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    
      
               if (actionId == EditorInfo.IME_ACTION_DONE) {
    
       
                // 按下完成按钮,这里和上面imeOptions对应
                text.setText("Editing EditorInfo.IME_ACTION_DONE");  
                return false;   //返回true,保留软键盘。false,隐藏软键盘
                }
            }  
        });  

2. Respuesta al evento del disco del software de Android: android: imeOptions, KeyEvent, android: inputType

Respuesta al evento del disco del software de Android:
en Android, a veces es necesario implementar la supervisión del disco del software para EditText. Cuando Android presiona el teclado virtual, responde a la finalización, envío, búsqueda u otros eventos.
Google proporciona algunos métodos de EditorInfo y KeyEvent para lograr las funciones que necesitamos. Se puede estudiar en detalle: EditorInfo.class y KeyEvent.class.

2.1 Información del editor

Establezca la propiedad ImeOptions de EditText en diferentes valores y se podrán mostrar diferentes textos o patrones en la tecla Intro.
acciónNinguno: Tecla Intro, después de presionar, el cursor va a la siguiente línea
actionGo: Ir
actionSearch: una lupa
actionSend: Enviar
actionSiguiente: Siguiente
acciónDone: Listo, oculta el teclado en pantalla, incluso si no es el último cuadro de entrada de texto

Método de seguimiento:

private final EditText.OnEditorActionListener editorActionListener =
           new TextView.OnEditorActionListener() {
    
    
               @Override
               public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    
    
                   if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) {
    
    
                       //业务代码
                       haoMent.createTest(Test.getId(), v.getText().toString());
                       UiUtils.hideSoftKeyboard(getApplicationContext(), haoTest.this);
                       v.setText("");
                       v.clearFocus();
                       handler.post(updateView);
                   }
                   return true;
               }
          };
2.2 Evento clave

Si el método de entrada del teléfono móvil no es el método de entrada integrado, sino otro método de entrada de terceros, entonces puede ocurrir el problema de que la tecla Intro en el disco del software no responde. Para evitar este tipo de cosas, responda a su KeyEvent.

Agregue la respuesta del evento en el código:

 
inputKey = (EditText) findViewById(R.id.contactSearch_editText);
inputKey.addTextChangedListener(watcher);
 
inputKey.setOnKeyListener(new View.OnKeyListener() {
    
    
@Override
  public boolean onKey(View v, int keyCode, KeyEvent event) {
    
    
    
 
  if (KeyEvent.KEYCODE_ENTER == keyCode && event.getAction() == KeyEvent.ACTION_DOWN) {
    
    
    handler.post(updateView);
    return true;
  }
  return false;
  }
});
//响应键盘内容
public TextWatcher watcher = new TextWatcher() {
    
    
 
  @Override
  public void beforeTextChanged(CharSequence charSequence, int i, int i2,int i3) {
    
    
 
  }
 
  @Override
  public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
    
    
 
  }
 
  @Override
  public void afterTextChanged(Editable editable) {
    
    
 
  handler.post(updateView);
 
  }
};
2.3 tipo de entrada de Android: android: inputType
android:inputType="none"--输入普通字符
android:inputType="text"--输入普通字符
android:inputType="textCapCharacters"--输入普通字符
android:inputType="textCapWords"--单词首字母大小
android:inputType="textCapSentences"--仅第一个字母大小
android:inputType="textAutoCorrect"--前两个自动完成
android:inputType="textAutoComplete"--前两个自动完成
android:inputType="textMultiLine"--多行输入
android:inputType="textImeMultiLine"--输入法多行(不一定支持)
android:inputType="textNoSuggestions"--不提示
android:inputType="textUri"--URI格式
android:inputType="textEmailAddress"--电子邮件地址格式
android:inputType="textEmailSubject"--邮件主题格式
android:inputType="textShortMessage"--短消息格式
android:inputType="textLongMessage"--长消息格式
android:inputType="textPersonName"--人名格式
android:inputType="textPostalAddress"--邮政格式
android:inputType="textPassword"--密码格式
android:inputType="textVisiblePassword"--密码可见格式
android:inputType="textWebEditText"--作为网页表单的文本格式
android:inputType="textFilter"--文本筛选格式
android:inputType="textPhonetic"--拼音输入格式
android:inputType="number"--数字格式
android:inputType="numberSigned"--有符号数字格式
android:inputType="numberDecimal"--可以带小数点的浮点格式
android:inputType="phone"--拨号键盘
android:inputType="datetime"
android:inputType="date"--日期键盘
android:inputType="time"--时间键盘
密码框属性 android:password="true"   让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。

纯数字 android:numeric="true"      让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

仅允许 android:capitalize="haoTest"   仅允许接受输入haoTest,一般用于密码验证

android:editable="false"         设置EditText不可编辑

android:singleLine="true"        强制输入的内容在单行

android:ellipsize="end"         自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时

Supongo que te gusta

Origin blog.csdn.net/fenglolo/article/details/131557427
Recomendado
Clasificación