android edittext 实现enter键自动换行,并空自动空二格,实现文字自动排版

功能一,近日遇到需要给输入的文字换行,并自动换二格的问题,几经周折,终于找到了解决方案

先判断软键盘输入的是enter键。在这里 return true的是为了防止输入法自身遇到enter键换行,这样就会导致换二行出现。而除了enter 返回false,就是为了让其它的软键盘功能正常使用,不然删除等键全会失效!

另外加一个 action_up是为了防止 这里调用2次这个方法。action_down的时候,此方法也会调用 ,在此作一个过滤。

  edt_line.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_ENTER) {
                    if ((event.getAction() == KeyEvent.ACTION_UP)) {
                        Log.w(TAG, "************");
                        int end = edt_line.getSelectionEnd();
                        Editable editableText = edt_line.getEditableText();
                        editableText.insert(end, "\r\n    ");
                    }
                    return true;
                }
                return false;
            }
        });

 

功能二:自动排版,有了上面的工作,自动排版就比较容易了,把不需要的空格替换掉即可。首先替换掉所有的空格,然后给换行符后面加4个空格。搞定,是不是很简单^_^

   String text = edt_line.getText().toString().trim();
                Log.d(TAG, "before:\n" + text);
                text = text.replaceAll(" ", "");
                text = text.replaceAll("\t", "");
                text = text.replaceAll("\n", "\n    ");
                Log.d(TAG, "after:\n" + text);
                edt_line.setText(text);

 

1.获取光标位置,start为插入数据前光标,end为结束编辑后光标位置

int index = editText.getSelectionStart();  
 
int end = editText.getSelectionEnd();


2.在光标处插入字符
 

int index = editText.getSelectionStart();  
Editable editable = editText.getText();  
editable.insert(index, "bbbb");  

3.删除光标前字符
 


int index = editText.getSelectionStart();  
Editable editable = editText.getText();  
editable.delete(index-1, index);  


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值