Android中EditText的一切

本篇我想总结下关于EditText控件的使用和遇到的问题

可以,不跟你多bb,基本知识请直接看Android Developers中关于EditText的API,本篇问题也大多于查看api之后的方法总结。

问题

  1. 经常碰到界面初始化后EditText就会自动获取焦点并弹出输入法,这样的用户体验很不好,所以我们可以禁止输入法自动弹出。
    解决方案:
    方案1:在Activity的onCreate()方法中加入:
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    方案2:在Manifest文件中的Activity注册标签下,加入属性:
    android:windowSoftInputMode="statehidden"
  2. 用户在使用EditText进行输入后,我们可以利用软键盘上特色功能进行导航,提高用户体验。
    在xml中添加属性:android:imeOptions.
    actionGo 输入法右下角显示“去往”.
    actionSearch 输入法右下角显示“搜索”.
    actionSend 输入法右下角显示“发送”.
    actionNext 输入法右下角显示“下一个”.
    actionDone 输入法右下角显示“完成”.
    actionPrevious 输入法右下角显示“上一个”.
    给EditText设置OnEditorActionListener,代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    private OnEditorActionListener actionListener = new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    switch (v.getId()) {
    case R.id.et_first:
    if(actionId == EditorInfo.IME_ACTION_SEND) {
    //进行处理
    }
    break;
    case R.id.et_second:
    if(actionId == EditorInfo.IME_ACTION_SEARCH) {
    //进行处理
    }
    break;
    default:
    break;
    }
    return false;
    }
    };

注意:必须在xml上加上

1
2
android:maxLines="1"
android:inputType="text"

中其中一个才能使用这个导航功能,或者用java代码也行

1
2
editText.setInputType(EditorInfo.TYPE_CLASS_TEXT);
editText.setSingleLine(true);

坚持原创技术分享,您的支持将鼓励我继续创作!