2016-10-23 5 views
2

html 텍스트를 표시하기 위해 사용자 정의 TextView이 있습니다. pre-Nougat 장치의 경우 작동합니다. 이미 누가에 알다시피, fromHtml은 더 이상 사용되지 않으며 내 코드는 다음과Nougat의 Html.fromHtml이 사용자 정의 HtmlHandler를 호출하지 않습니다.

Spannable s = getRichText(text); 
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { 
    super.setText(Html.fromHtml(s.toString(), Html.FROM_HTML_MODE_COMPACT, this, new HtmlHandler(getContext())), BufferType.SPANNABLE); 
} else { 
    super.setText(Html.fromHtml(s.toString(), this, new HtmlHandler(getContext())), BufferType.SPANNABLE); 
} 

HtmlHandler 클래스가 호출되지 얻을 않습니다,하는 문제 그것 같이하는 flag..so이 필요합니다. (나는 이미 모든 깃발을 시험해 보았다). HtmlHandler에서 태그와 스타일을 처리합니다 (예 : background-color, color 등). rgb, rgba, hls 등의 색상을 구현했습니다.하지만 Nougat에서는 Nougat에서 색상을 읽고 표시 할 수 있기 때문에 Nougat에서는 16 진수 만 사용할 수 있습니다. 왜 이런 일이 일어나는 걸까요? 색상을 유지하려면 어떻게해야합니까? 너가 무언가를 이해하지 않거나, 세부 사항을 더 필요로하면, 나에게 알린다.

내가 테스트를 위해 사용하는 HTML은

<p><strong>Server</strong><u> message</u><strong><u>!!!</strong></u> <span style="background-color: rgb(255,0,0);">Not working on Nugat</span></p> 
+0

질문을 편집하고 HTML 샘플을 제공하고, 'TagHandler'로 라우팅되지 않는 것의 표시를 제공 할 수 있습니까? (이전 7.0에 사용되던 곳)? 예를 들어'Html'은 꽤 오래''을 지원합니다. 7.1 (그리고 아마도 7.0)이 이제는 ''태그를 처리하는 반면 이전에는 그렇지 않았던 것으로 나타났습니다 - 문제가있는 곳이 어디입니까? – CommonsWare

+0

질문을 편집합니다. 문제는 '스팬'이 아닙니다. 왜냐하면 그것은'div' 나'p'와 함께 작동하지 않기 때문입니다. 문제는 내'HtmlHandler' 클래스가 결코 호출되지 않는다는 것입니다. 그것은 이상한 부분입니다 –

+0

내 TagHandler에서'ol','ul','strike','code','span','div'와'background-color','color'와 fontawesome, 그들 중 누구도 누가 (Nougat)에서 일하고있다. –

답변

5

Html.fromHtml()fromHtml() 인식하지 않는 TagHandler에 대한 HTML 태그를 호출 할 것이다. 샘플 HTML에서, 당신은 :

  • <p>
  • <strong>
  • <u>
  • <span>

과 첫 번째 의견에

, 당신은 또한 div을 언급. 하지 이전의 경우 이들 중

, fromHtml()at least 2010 이후 <p>, <strong><u>을 처리했다. Android 6.0의 fromHtml()<div> (의 488-489 행 참조)을 처리합니다. 그 지원이 어떻게 되가는지 잊어 버립니다. TagHandler은 이러한 태그 중 하나에 대해 호출되지 않으며 그 동작은 특히 새로운 것은 아닙니다.

안드로이드 7.0 <span>에 대한 지원 (the 7.1 source에서 선 804-805 참조), 그리고 TagHandler는 안드로이드 7.0 및 이전 버전 사이에 다르게 행동 할 <span>에 대해 호출 될 것으로 예상 그래서 코드를 추가했습니다.

일반적으로 지원되는 태그 목록은 문서화되어 있지 않습니다. Google은 언제든지 지원되는 태그 목록을 변경할 수 있습니다.

옵션은 다음과 같습니다

  • , 당신이 좋아하는 어떤 Html.java 원본이

  • 잡아와 함께 상관 자신의 패키지로 리팩토링, 복사 사용, 당신이 볼로 수정

  • 당신이 더 나은

을 좋아하는 다른 HTML - 투 - Spannable 소스 코드를 찾기에 맞게
+0

알았어. 내가 무엇을 할 수 있는지 알아볼 게. 고마워요! –