我想将每行的字符数限制为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());
}
}
});
答案 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
。