Android Edittext 软键盘输入法回车键改成下一步Next

软件盘中回车键默认功能是换行,但是有时候我们在Edittext中输完内容后点回车想要把焦点切到下一个Edittext继续输入,比如常见的登录页面,在输完用户名后,点回车调到输入密码输入框继续输入。

示例代码

代码很简单,如下所示:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <EditText
        android:id="@+id/account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="actionNext"
        android:singleLine="true"/>
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:imeOptions="actionDone"
        android:singleLine="true"/>
</LinearLayout>

分析

其实重点就以下两句话

  1. android:imeOptions="actionNext"
  2. android:singleLine="true"

android:imeOptions="actionNext" 表示把回车键设置成下一步按钮,这里不同的输入法,不同的语言可能按钮上显示的文字会些许不同,比如有些手机上回显示下一步,有的显示下一个,有的英语输入法显示Next,意思大同小异。

android:singleLine="true"意思是设置Edittext只能输入一行,要注意的这句话必不可少,否则android:imeOptions="actionNext"的设置还是无法生效,点击回车还是会换行。想说用android:maxLines="1"设置是不是也是等效的,结果发现还是会换行,只能用android:singleLine="true",虽然说android:singleLine属性已经被@Deprecated了。

 

nextFocusForward

在上面的示例代码中,输完账号后点回车默认焦点是传递给下一个Edittext的。假设有三个Edittext,输完第一个后想跳过第二个Edittext直接输入第三个呢?这就需要靠nextFocusForward属性来实现

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <EditText
        android:id="@+id/edit1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="actionNext"
        android:nextFocusForward="@+id/edit3"
        android:singleLine="true"/>
    <EditText
        android:id="@+id/edit2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:imeOptions="actionNext"
        android:singleLine="true"/>
    <EditText
        android:id="@+id/edit3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:imeOptions="actionDone"
        android:singleLine="true"/>
</LinearLayout>

代码很简单,关键看第一个Edittext中的android:nextFocusForward="@+id/edit3"这句话,字面意思就是说下一个获取焦点的控件。需要注意设置的值写法是@+id/edit3而不是@id/edit3,少了加号的话无法编译成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值