Android Studio 软键盘的监听事件setOnEditorActionListener

这篇博客介绍了在Android Studio中如何使用EditText的setOnEditorActionListener监听软键盘事件,结合imeOptions属性实现不同的软键盘功能。例如,通过设置imeOptions来控制软件盘右下角按钮的行为,如IME_ACTION_DONE用于完成输入。博主还提供了一个登录界面的实例,展示了如何结合AlertDialog和Toast来增强用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在用AS做登录界面使用EditText的时候,发现了一个监听事件setOnEditorActionListener;因为通过布局文件中的imeOptions可以控制软件盘右下角的按钮显示为不同按钮。所以和EditorInfo搭配起来可以实现各种软键盘的功能。

各种属性对应:

  • 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

    用法

    • 布局中定义一个EditText控件
    • 定义一个可编辑的editText控件

    <EditText
        android:id="@+id/name_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="@null"
        android:hint="请输入账户"
        android:textSize="14sp"
        android:ems="10"
        android:inputType="number"
        android:imeOptions="actionDone" /> <!-- 这里和onEditorAction中actionId对应-->
    • 添加setOnEditorActionListener方法

    • //定义监听事件
      nameEdit.setOnEditorActionListener(this);
    • /*
      * EditText是TextView子类
      * 方法:onEditorAction()
      * 第一个参数:TextView textView 表示当前触发事件的EditText的对象,类似于textView=findViewById(R.id.name_edit)
      * 第二个参数:int actionId 表示 按下“完成按钮”,这里和xml文件中EditText属性imeOptions对应
      *             但要注意actionId是指软盘上的,而键盘上的actionId与软盘上的不一样;即在软盘上“完成按钮”的actionId为0,而键盘上的“完成按钮(回车键)”的actionId为6
      * 第三个参数:KeyEvent keyEvent 表示 按下“完成按钮”,这里和xml文件中EditText属性imeOptions对应,但keyEvent里面的内容更丰富,内容如下:
      *             keyEvent.toString()=KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_ENTER, scanCode=28, metaState=0, flags=0x8, repeatCount=0, eventTime=5664212, downTime=5664212, deviceId=1, source=0x301 }
      * 返回值:返回true,保留软键盘;false,隐藏软键盘
      */
      @Override
      public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
          Toast.makeText(login_activitys.this, textView.getText().toString(), Toast.LENGTH_LONG).show();
          Log.i(LOG_TEST,actionId+"|"+EditorInfo.IME_ACTION_DONE);
          if (actionId == EditorInfo.IME_ACTION_DONE) {   // 按下完成按钮,这里和xml文件中的EditText中属性imeOptions对应;
              Toast.makeText(login_a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值