文档章节

让EditText响应软键盘动作

安卓工程师王恒
 安卓工程师王恒
发布于 2017/01/06 09:58
字数 330
阅读 39
收藏 0

转载请注明出处:https://my.oschina.net/wfy94/blog/819699

使用情景:应用的登陆界面,输入用户名,希望软键盘出现下一步按钮,并跳转到密码框,在密码框希望软键盘出现完成按钮,点击完成提交数据。

布局写法:

imeOptions 指定软键盘额外显示的按钮

imeOptions =actionNext时,需要用nextFocusForward指定下一个获取焦点的view

<EditText
    android:id="@+id/etv_username"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:background="@android:color/transparent"
    android:layout_marginLeft="15dp"
    android:textColor="@android:color/white"
    android:textColorHint="@android:color/white"
    android:hint="请输入帐号"
    android:imeOptions="actionNext"
    android:nextFocusForward="@+id/etv_password"
    android:maxLength="20"
    android:singleLine="true"
    android:textSize="@dimen/login_text_size"
    />
<EditText
    android:id="@+id/etv_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:background="@android:color/transparent"
    android:layout_marginLeft="15dp"
    android:textColor="@android:color/white"
    android:hint="请输入密码"
    android:textColorHint="@android:color/white"
    android:inputType="textPassword"
    android:imeOptions="actionDone"
    android:maxLength="20"
    android:singleLine="true"
    android:textSize="@dimen/login_text_size"
    />

代码写法:

监听额外按钮的事件

如果没有达到下一步的条件,监听到下一步之后再次让它获取焦点就可以

TextView.OnEditorActionListener
etv_username.setOnEditorActionListener(this);
etv_password.setOnEditorActionListener(this);
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    String username=etv_username.getText().toString().trim();
    switch (v.getId()){
        case R.id.etv_username:
            if(actionId==EditorInfo.IME_ACTION_NEXT){
                if(TextUtils.equals(username,"")){
                    v.setNextFocusForwardId(v.getId());
                    Toast.makeText(activity,"请输入帐号",Toast.LENGTH_SHORT).show();
                }else{
                    v.setNextFocusForwardId(R.id.etv_password);
                }
            }
            break;
        case R.id.etv_password:
            if(actionId==EditorInfo.IME_ACTION_DONE){
                String password=etv_password.getText().toString().trim();
                submit(username,password);
            }
            break;
    }
    return false;
}

© 著作权归作者所有

下一篇: Android Resourse
安卓工程师王恒
粉丝 2
博文 150
码字总数 70787
作品 0
浦东
Android工程师
私信 提问
Android:imeOptions来改变软键盘Enter键图标

1.actionUnspecified 未指定,对应常量EditorInfo.IMEACTIONUNSPECIFIED. 2.actionNone 没有动作,对应常量EditorInfo.IMEACTIONNONE 3.actionGo 去往,对应常量EditorInfo.IMEACTIONGO 4.acti......

Erichkko
2015/10/28
4.3K
0
Android软键盘的一些控制

"EditText + Button" 形成一个 "输入+按键响应" 的案例在android编程中是最常见不过的了。 但还有一些细节需要注意: 在EditText输入后,点击Button进行请求,软键盘应该自行消失 在EditTex...

晨曦之光
2012/03/05
790
0
EditText属性及使用

EditText常见属性: 属性 功能 android:hint="提示信息" 设置显示在控件上的提示信息 android:numeric="integer" 设置只能显示数字,integer:整数;decimal:小数 android:singleLine="true......

紫韵
2016/01/29
78
1
Android开发之EditText属性详解

1、EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 (2)在代码里设置: 通过设置EditText的setTransformation...

的书法上的
2014/07/28
266
0
Android PopupWindow的使用

下面是一个弹出带ListView和TextView的PopupWindow实例: 这是弹出框的布局文件: style中添加: drawable中添加dialogenter.xml和dialogexit.xml: 补充: 在用PopupWindow实现底部弹出菜单的...

SRain215
2015/11/24
374
1

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
31分钟前
3
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
33分钟前
4
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
今天
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部