逐行定义Edittext Android

时间:2015-03-25 17:00:17

标签: android android-edittext

我想写这样的东西:

  

今天是星期一//这是20个字符现在我想跳到新行

     

Tommorow是// 20个字符,它跳过了一行,因为最后一个输入是一个完整的单词。

     

星期一//这被跳过了,因为单词结束了20个字符。

当它达到20个字符时,如何实现每行的最大字符数并指定回车符(如果单词不完整则将单词移动到新行)?

可以用于例如:

  

一个小说写作程序。

我想我必须为输入的每个字符使用某种读取功能。

2 个答案:

答案 0 :(得分:1)

我想你可以用TextWatcher来达到这个效果。一种可能的解决方案是听取前一个换行符,并在20个字符后设置自动换行符:

    editText = (EditText) findViewById(R.id.editText);
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if ((editText.length()%20) == 0){
                editText.getText().insert(editText.length(), "\n");
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });

我怀疑这会在刷卡键盘上起作用。它还会阻止您使用退格键返回上一行。要抵消这种情况需要更复杂的内容 - 您可以使用for循环来持续监听beforeTextChanged中的最后一个换行符,或使用带有覆盖的Boolean开关{{1对于onKey

答案 1 :(得分:0)

您可以循环播放字符串,并在每次计数器达到20时放置\n,或直到达到字符串的末尾。