如何限制多行编辑文本中每行的字符?

时间:2014-01-20 14:58:21

标签: android android-edittext

我想将每行的字符数限制为15个字符。在每15个字符后,我应该在行中包含/添加一个“输入”键(“\ n”),以便用户可以不停地写入。有什么建议吗?

这是我的EditText xml

<EditText
        android:id="@+id/ET"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:ems="10"
        android:maxLength="20"
        android:inputType="textMultiLine"
        android:visibility="gone" />

这是我的ET TextChangedListener

ET.addTextChangedListener(new TextWatcher(){
        @Override
        public void afterTextChanged(Editable s) {}
        @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 (count % 20 == 0)
            {
                ((Editable) s).append("\n");
                ET.setSelection(ET.getText().length());
            }

        }
    });

2 个答案:

答案 0 :(得分:0)

您需要自定义Text Watcher,请从以下模板获取帮助:

private class CustomTextWatcher implements TextWatcher {
private EditText recieved_et;

public CustomTextWatcher(EditText e) {
    recieved_et = e;
}

public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
       //Your Implementation
}

public void onTextChanged(CharSequence s, int start, int before,
        int count) 
{
    if (count % 20 == 0)
    {
        ((Editable) s).append("\n");
        recieved_et.setText(s.toString());
    }
}   

public void afterTextChanged(Editable s) {
       //Your Implementation
    }
}

以下是如何将此设置为Edit Text

ET.addTextChangedListener(new CustomTextWatcher(ET));
我希望这会有所帮助。

答案 1 :(得分:0)

您必须以编程方式将TextWatcher添加到EditText

onTextChanged()函数中,您可以获取文本,如果最后一行是20个字符长,请使用s.append("\n");函数。

您还需要实现我认为的删除功能。如果用户删除了"\n"字符,您还需要删除前一个字符。

您还需要注意该功能,因为它很容易陷入infinite loop