티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Html.fromHtml deprecated in Android N
Android N에서 지원 중단된 Html.fromHtml
문제 내용
I am using Html.fromHtml
to view html in a TextView
.
TextView에서 HTML을 보기 위해 Html.fromHtml을 사용하고 있습니다.
Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);
But Html.fromHtml
is now deprecated in Android N+
그러나 Html의 Html.from은 이제 안드로이드 N+에서 더 이상 지원되지 않습니다.
What/How do I find the new way of doing this?
이 작업의 새로운 방법을 어떻게 찾을 수 있습니까?
높은 점수를 받은 Solution
update: as @Andy mentioned below Google has created HtmlCompat
which can be used instead of the method below. Add this dependency implementation 'androidx.core:core:1.0.1
to the build.gradle file of your app. Make sure you use the latest version of androidx.core:core
.
업데이트: @Andy가 아래에서 언급했듯이 Google은 아래 메서드 대신 사용할 수 있는 HtmlCompat를 만들었습니다. 이 의존성 구현 'androidx.core:core:1.0.1'을 앱의 build.gradle 파일에 추가하세요. 최신 버전의 androidx.core:core를 사용해야 합니다.
This allows you to use:
이를 통해 다음을 사용할 수 있습니다:
HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);
You can read more about the different flags on the HtmlCompat-documentation
다양한 플래그에 대한 자세한 내용은 HtmlCompat 문서를 참조하십시오
original answer: In Android N they introduced a new Html.fromHtml
method. Html.fromHtml
now requires an additional parameter, named flags. This flag gives you more control about how your HTML gets displayed.
원래 답변: Android N에서는 새로운 Html.fromHtml 메서드를 도입했습니다. 이제 Html.fromHtml에는 flags라는 추가 매개변수가 필요합니다. 이 플래그를 사용하면 HTML이 표시되는 방식을 더 잘 제어할 수 있습니다.
On Android N and above you should use this new method. The older method is deprecated and may be removed in the future Android versions.
안드로이드 N 이상에서는 이 새로운 방법을 사용해야 한다. 이전 방식은 더 이상 사용되지 않으며 향후 안드로이드 버전에서 제거될 수 있습니다.
You can create your own Util-method which will use the old method on older versions and the newer method on Android N and above. If you don't add a version check your app will break on lower Android versions. You can use this method in your Util class.
이전 버전에서는 이전 방법을 사용하고 Android N 이상에서는 최신 방법을 사용하는 고유한 Util 방법을 만들 수 있습니다. 버전 확인을 추가하지 않으면 낮은 Android 버전에서 앱이 중단됩니다. Util 클래스에서 이 메서드를 사용할 수 있습니다.
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
if(html == null){
// return an empty spannable if the html is null
return new SpannableString("");
}else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// FROM_HTML_MODE_LEGACY is the behaviour that was used for versions below android N
// we are using this flag to give a consistent behaviour
return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
} else {
return Html.fromHtml(html);
}
}
You can convert the HTML.FROM_HTML_MODE_LEGACY
into an additional parameter if you want. This gives you more control about it which flag to use.
원하는 경우 HTML.FROM_HTML_MODE_LEGACY를 추가 매개변수로 변환할 수 있습니다. 이렇게 하면 사용할 플래그를 더 잘 제어할 수 있습니다.
You can read more about the different flags on the Html class documentation
Html 클래스 문서에서 다양한 플래그에 대해 자세히 알아볼 수 있습니다.
가장 최근 달린 Solution
just make a function :
그냥 함수를 만드세요:
public Spanned fromHtml(String str){
return Build.VERSION.SDK_INT >= 24 ? Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(str);
}
출처 : https://stackoverflow.com/questions/37904739/html-fromhtml-deprecated-in-android-n
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드에서 다이얼로그 버튼 텍스트 색상 변경하기 (0) | 2023.01.08 |
---|---|
액티비티 외부에서 getSystemService 호출하기 (0) | 2023.01.07 |
액티비티 재시작하기 (0) | 2023.01.06 |
AsyncTask.OnPostExecute()의 결과를 메인 액티비티에서 받기 (0) | 2023.01.06 |
뒤로 가기 두번 클릭으로 액티비티 종료하기 (0) | 2023.01.05 |