2012-07-24 3 views
3

모두HTML 형식의 문자열을 TextViews 및 EditText에 삽입

EditText의 서식 정보를 유지하기 위해 HTML 태그 텍스트를 저장할 데이터베이스가 있습니다. HTML.toHtml (EditText.getText)을 사용하여이 문자열을 만듭니다. 이 방법은 스패닝 된 텍스트를 <p> and </p>과 함께 넣는 방식으로 처리됩니다. 그 문제는 HTML.fromHtml (HTMLFormattedString) 메서드를 사용하고 TextView 또는 EditText의 setText 메서드를 사용해야 할 때 실제 텍스트의 끝에 두 개의 추가 선이 있다는 의미입니다. 단락 태그는 HTML과 함께 작동합니다.

내 질문에 어쨌든 textView 또는 EditText가 여분의 빈 줄을 표시하지 않도록 축소 할 수 있습니까? 가장 간단한 방법은 무엇입니까? 나는 단지 마지막으로 <p> and </p>을 제거하는 것으로 실험했지만, 사용자가 리턴 키로 3 줄 이상의 새로운 줄을 입력하지 않은 경우에만 작동합니다.

답변

3

생성 된 스팬 텍스트의 끝에 공백을 검색하고 제거했습니다. 이는 <p> </p>으로 인해 여분의 공간을 처리했으며 동일한 결과를 얻으려면 언급 된 클래스를 재정의하는 것보다 시간이 적습니다.

public SpannableStringBuilder trimTrailingWhitespace(
     SpannableStringBuilder spannableString) { 

    if (spannableString == null) 
     return new SpannableStringBuilder(""); 

    int i = spannableString.length(); 

    // loop back to the first non-whitespace character 
    while (--i >= 0 && Character.isWhitespace(spannableString.charAt(i))) { 
    } 

    return new SpannableStringBuilder(spannableString.subSequence(0, i + 1)); 
} 
2

글쎄요. 나는 같은 문제가 있었다. 그리고 두 가지 옵션이 제공됩니다.

1) 단락 태그가 의심되는 방식대로 작동한다고 말한 것처럼 1) 이 코드는 두 개의 "\ n"값을 각 < \ p> 태그의 끝에 추가합니다. 그래서 당신은 문자열로 HTML을 변환하고 일반적으로 두 개의 "\ n을"있는 마지막 두 문자를 제거 할 수의

또는

2) 당신은 html로 클래스 자체에 얻을 수있다. 즉, HTML 클래스를 재정의하고 handleP(SpannableStringBuilder text)을 찾고 핵심 로직을 조금 변경해야합니다.

private static void handleP(SpannableStringBuilder text) { 
    int len = text.length(); 

    if (len >= 1 && text.charAt(len - 1) == '\n') { 
     if (len >= 2 && text.charAt(len - 2) == '\n') { 
      return; 
     } 
     text.append("\n"); 
     return; 
    } 

    if (len != 0) { 
     text.append("\n\n"); 


    } 
} 

은 여기에서 볼 수 있듯이, 그것은이었다 당신이 변화를해야하는 len!=0에서 두 개의 "\ n을"을 추가합니다.

+1

+1. 정확히 어디서 봐요? 나 자신을 찾아 보는 것은 게으르다. –

+1

Vinay 여기에서 찾을 수 있습니다 - http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/text/Html.java#HtmlToSpannedConverter.handleP % 28android.text.SpannableStringBuilder % 29 –

+0

여기서 말하는 문제는 참조하는 클래스가 보호되어 있고 메서드를 재정의 할 수 없다는 것입니다. 기본적으로이 시점에서 사용자 정의 HTML 클래스를 다시 작성합니다. –

관련 문제