zoukankan      html  css  js  c++  java
  • Android软键盘事件imeOptions响应

    版权声明:本文为HaiyuKing原创文章,转载请注明出处!

    前言

    在android发开过程中,有时候需要对EditText的软键盘进行监听。 
    当点击软键盘回车位置按键的时候,需要实现 完成、前进、下一项、搜索、发送或其他功能,这就需要开发者对软键盘回车的点击事件进行捕捉。 
    比如在登录界面,需要用户在输入密码之后点击软键盘回车直接登录,不必再去点击屏幕上的登录按钮。我们就可以在密码使用的EditText设置 android:imeOptions=”actionDone”,然后对EditText设置OnEditorActionListener监听,当捕捉到用户点击完成时,调用登录方法即可。(IME英文全称Input Method Editors,中文名称输入法编辑器

    效果图

    代码分析

    (1)布局文件中设置 android:imeOptions属性值

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <EditText
            android:id="@+id/edit_search"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:hint="请输入搜索内容"
            android:imeActionLabel="搜索"
            android:imeOptions="actionSearch"
            android:inputType="text"
            android:paddingLeft="8dp"
            android:singleLine="true"
            android:textColor="#87000000"
            android:textColorHint="#b1b1b1"
            android:textSize="16sp"/>
    
    </LinearLayout>

    使用android:imeOptions属性的时候,一定要对EditText设置 android:inputType 或者 设置 android:singleline=”true”。

    imeOptions可选值分别是:

    • actionDone====完成====EditorInfo.IME_ACTION_DONE
    • actionGo====前进====EditorInfo.IME_ACTION_GO
    • actionNext====下一项====EditorInfo.IME_ACTION_NEXT
    • actionNone====无动作====EditorInfo.IME_ACTION_NONE
    • actionPrevious====上一项====EditorInfo.IME_ACTION_PREVIOUS
    • actionSearch====搜索====EditorInfo.IME_ACTION_SEARCH
    • actionUnspecified====未指定====EditorInfo.IME_ACTION_UNSPECIFIED
    • actionSend====发送====EditorInfo.IME_ACTION_SEND

    (2)在代码中声明监听事件

    package com.why.project.androidcnblogsdemo.activity;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.KeyEvent;
    import android.view.inputmethod.EditorInfo;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.why.project.androidcnblogsdemo.R;
    
    /**
     * Created by HaiyuKing
     * Used EditText的imeOptions事件响应
     */
    
    public class EditTextImeOptionsActivity extends AppCompatActivity {
    
        private EditText mSearchEdit;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_edittext_imeoptions);
    
            initViews();
            initEvents();
        }
    
        private void initViews() {
            mSearchEdit = findViewById(R.id.edit_search);
        }
    
        private void initEvents() {
            mSearchEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                @Override
                public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                    switch (i) {
                        case EditorInfo.IME_ACTION_SEARCH:
                            Toast.makeText(EditTextImeOptionsActivity.this,mSearchEdit.getText().toString(),Toast.LENGTH_SHORT).show();
                            break;
                        default:
                            break;
                    }
                    return true;
                }
            });
        }
    }

    参考资料

    Android 软键盘事件imeOptions响应

  • 相关阅读:
    java的第八次作业
    软件工程第三次作业——关于软件质量保障初探
    java的第七次作业
    java的第六次作业
    20194688 自动生成四则运算题第一版报告
    软件工程第一次作业
    vertical-align
    行高(line-height)
    文本对齐方式(text-align)
    文字样式属性
  • 原文地址:https://www.cnblogs.com/whycxb/p/9468869.html
Copyright © 2011-2022 走看看