2011-04-09 7 views
0

StackExchange에 액세스 할 수있는 Android 앱을 작성 중이며 StackExchange API에서 사용되는 간단한 HTML 단편 렌더링을 처리하는 가장 좋은 방법을 찾고 있습니다. API의 유일한 HTML은 질문, 답변 및 의견의 본문에 있습니다. 코멘트는 HTML의 더 제한된 부분 집합을 사용합니다. 대부분의 HTML은 <p>, <b>, <pre> 등과 같이 단순한 형식이지만, <a>과 가끔 <img> 태그도 있습니다. TextView를 사용하고 HTML을 스타일링으로 대체하려고 생각했지만 너무 제한적이었습니다. WebView를 살펴 보았지만 과장된 것 같습니다. WebViews는 외부 동적 콘텐츠를로드하고 여러 스레드를 시작하는 것 같습니다. CSS 나 JavaScript가 포함되지 않은 API에서 제공되는 단순하고 고정 된 HTML 렌더링을 계획하고 있습니다.간단한 HTML 단편 렌더링 방법

또한 TextView에서 사용할 때 곱슬 따옴표 같은 문자가 여러 문자로 표시되는 WebView에서 인코딩 문제가 발생합니다.

답변

1

당신이 할 수있는 일은 Html.fromHtml()function입니다.

Spanned 유형 개체가 남습니다. 해당 위치에서 태그를 처리하기 위해 별도의 기간을 사용할 수 있습니까?

태그를 편집하는 예입니다. 상황 : html.fromhtml을 사용하여 작동하는 html 태그가있는 텍스트. 그러나 때때로 URL은 상대적이며 ("http://domain.com/file.html"대신 "/file.html"을 사용하므로) 사용할 수 없습니다. 아래의 함수에 spannable을 보내면 URL에 대한 모든 범위를 찾고 도메인을 추가합니다. 당신은 당신의 특정 태그에 대해 다른 당연히 somehting을 사용할 수

protected Spanned correctLinkPaths (Spanned spantext) { 
    Object[] spans = spantext.getSpans(0, spantext.length(), Object.class); 
    for (Object span : spans) { 
     int start = spantext.getSpanStart(span); 
     int end = spantext.getSpanEnd(span); 
     int flags = spantext.getSpanFlags(span); 
     if (span instanceof URLSpan) { 
      URLSpan urlSpan = (URLSpan) span; 

      if (!urlSpan.getURL().startsWith("http")) { 
       if (urlSpan.getURL().startsWith("/")) { 
        urlSpan = new URLSpan("http://www.domain.com" + urlSpan.getURL()); 
       } else { 
        urlSpan = new URLSpan("http://www.domain.com/" + urlSpan.getURL()); 
       } 
      } 

      ((Spannable) spantext).removeSpan(span); 
      ((Spannable) spantext).setSpan(urlSpan, start, end, flags); 
     } 
    } 
    return spantext; 
} 

을 나는이 그것을 할 수있는 가장 효율적인 방법입니다 모르겠어요 spannables에 처음 연결 중 하나였다,하지만 최소한 몇 가지 트릭을 보여줍니다 당신은 spannables로 할 수 있습니다 : D

+0

이것은 분명히 내가 바라는 것보다 더 찾고 있습니다. 나는 그것이 필요한 모든 일을하는지보기 위해 그것을 가지고 놀아야 할 것입니다. – penguin359

+0

나는 당신이 할 수있는 것을 보여주기위한 예제를 추가했다. :) – Nanne