2014-01-20 3 views
1

줄당 문자를 15 자로 제한하고 싶습니다. 매 15 문자마다 사용자가 멈추지 않고 쓸 수 있도록 줄에 "enter"키 ("\ 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 당신은 다음과 같은 템플릿의 도움을하시기 바랍니다 여기에 사용자 정의 Text Watcher 필요 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

프로그래밍 방식으로 작성하지 않으시겠습니까? 15 문자가되면 – lantonis

+0

@lantonis 줄이 바뀌므로 변경하십시오. 여기에는 "\ n"이 포함되지만 끝까지 커서를 이동하려고해도 끝나는 지점에 그대로 유지됩니다. –

+0

가능한 복제본은 http://stackoverflow.com/questions/10933412/how-to-set-maximum입니다. -characters-per-line-for-text-view-in-android –

답변

0

입니다 :

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 
    } 
} 

이것을 y로 설정하는 방법입니다. 우리 Edit Text :

ET.addTextChangedListener(new CustomTextWatcher(ET));
도움이 되었기를 바랍니다.

+0

그건 작동하지 않습니다, 그것은 내 줄을 20 줄로 제한하지 않을 것입니다. –

+0

나는 당신을 이해하지 못했습니다. 20 행의 문자 만 표시하고 싶습니까? –

+0

아니요, 전체 텍스트의 길이가 아닌 각 행을 20 자로 제한하고 싶습니다. –

0

프로그래밍 방식으로 EditTextTextWatcher을 추가해야합니다.

onTextChanged() 함수에서 텍스트를 가져올 수 있으며 마지막 줄의 길이가 20자인 경우 s.append("\n"); 함수를 사용하십시오.

내가 생각하는 삭제 기능을 구현해야합니다. 사용자가 "\n" 문자를 삭제하면 이전 문자도 삭제해야합니다.

또한이 기능은 infinite loop에 쉽게 걸릴 수 있으므로주의해야합니다.

+0

정확히 내가 전에 시도한 것이지만 ET.setSelection (ET.getText(). length());을 포함 한 후에도 커서는 다음 줄로 이동하지 않습니다. –

+0

코드를 게시 할 수 있습니까? 나는 다른 방법이 없다고 생각한다. 우리는 귀하의 시행을 따를 수 있습니다. – tasomaniac

+0

완료, 제발 내 편집을 확인하십시오 –

관련 문제