私は単純なHTMLを持っています:
<h2>Title</h2><br>
<p>description here</p>
でHTMLスタイルのテキストを表示したいTextView
。これを行う方法?
私は単純なHTMLを持っています:
<h2>Title</h2><br>
<p>description here</p>
でHTMLスタイルのテキストを表示したいTextView
。これを行う方法?
Html.fromHtml()
XML 文字列で HTML を使用するには、 を使用する必要があります。レイアウト XML で HTML を使用して文字列を参照するだけでは機能しません。
これはあなたがJavaですべきことです
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));
} else {
textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));
}
そしてコトリンでは:
textView.text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)
} else {
Html.fromHtml(html)
}
これを見てください:https://stackoverflow.com/a/8558249/450148
こちらもなかなかいいです!!
<resource>
<string name="your_string">This is an <u>underline</u> text demo for TextView.</string>
</resources>
いくつかのタグでのみ機能します。
Java コードを変更せずに xml を介して構成できるようにしたい場合は、このアイデアが役立つ場合があります。コンストラクターから init を呼び出し、テキストを html として設定するだけです。
public class HTMLTextView extends TextView {
... constructors calling init...
private void init(){
setText(Html.fromHtml(getText().toString()));
}
}
xml:
<com.package.HTMLTextView
android:text="@string/about_item_1"/>
文字列リソース ID から HTML を表示しようとすると、フォーマットが画面に表示されないことがあります。そのような場合は、代わりに CDATA タグを使用してみてください。
strings.xml:
<string name="sample_string"><![CDATA[<h2>Title</h2><br><p>Description here</p>]]></string>
...
MainActivity.java:
text.setText(Html.fromHtml(getString(R.string.sample_string));
詳細については、この投稿を参照してください。
以下のコードは私にとって最良の結果をもたらしました。
TextView myTextview = (TextView) findViewById(R.id.my_text_view);
htmltext = <your html (markup) character>;
Spanned sp = Html.fromHtml(htmltext);
myTextview.setText(sp);
String value = "<html> <a href=\"http://example.com/\">example.com</a> </html>";
SiteLink= (TextView) findViewById(R.id.textViewSite);
SiteLink.setText(Html.fromHtml(value));
SiteLink.setMovementMethod(LinkMovementMethod.getInstance());
Strings.xml ファイル内の文字列に CData セクションを使用して、HTML コンテンツを TextView に実際に表示するための最良の方法は、以下のコード スニペットが公正なアイデアを提供します。
//in string.xml file
<string name="welcome_text"><![CDATA[<b>Welcome,</b> to the forthetyroprogrammers blog Logged in as:]]> %1$s.</string>
//and in Java code
String welcomStr=String.format(getString(R.string.welcome_text),username);
tvWelcomeUser.setText(Html.fromHtml(welcomStr));
文字列テキストの CData セクションは、String.format メソッドを使用してテキストをフォーマットした後でも、html タグ データをそのまま保持します。したがって、Html.fromHtml(str) は正常に機能し、ウェルカム メッセージに太字のテキストが表示されます。
出力:
お気に入りのミュージック アプリ ストアへようこそ。次のようにログイン: ユーザー名
次のプロジェクトも提案したいと思います: https://github.com/NightWhistler/HtmlSpanner
使用方法は、デフォルトの Android コンバーターとほぼ同じです。
(new HtmlSpanner()).fromHtml()
標準の Html.fromHtml はレンダリング制御に十分な柔軟性を提供せず、ttf からカスタムフォントを使用する可能性さえないため、html からスパン可能なコンバーターへの独自の実装によって既に開始した後にそれを見つけました。
簡単な使用Html.fromHtml("html string")
。これは機能します。文字列に次のようなタグがある場合、<h1>
スペースが来ます。しかし、それらのスペースをなくすことはできません。それでもスペースを削除したい場合は、文字列内のタグを削除してから、文字列をメソッドに渡すことができますHtml.fromHtml("html string");
。また、通常、これらの文字列はサーバー(動的)から取得されますが、文字列からタグを削除しようとするよりも、文字列をそのままメソッドに渡す方がよい場合は、そうではありません。
これをWebビューを使用して実装しました。私の場合、テキストビューのテキストとともに URL から画像をロードする必要があり、これは私にとってはうまくいきます。
WebView myWebView =new WebView(_context);
String html = childText;
String mime = "text/html";
String encoding = "utf-8";
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadDataWithBaseURL(null, html, mime, encoding, null);
String value = html value ....
mTextView.setText(Html.fromHtml(value),TextView.BufferType.SPANNABLE)
次のようなグローバル メソッドを作成します。
public static Spanned stripHtml(String html) {
if (!TextUtils.isEmpty(html)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT);
} else {
return Html.fromHtml(html);
}
}
return null;
}
次のようにアクティビティ/フラグメントで使用することもできます。
text_view.setText(stripHtml(htmlText));
以下のコードを使用して解決策を取得します。
textView.setText(fromHtml("<Your Html Text>"))
ユーティリティ メソッド
public static Spanned fromHtml(String text)
{
Spanned result;
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY);
} else {
result = Html.fromHtml(text);
}
return result;
}
Github のライブラリ ( https://github.com/jaredrummler/HtmlDslTextView
)を使用して、Android 用の有効な HTML を作成できます。HtmlDsl
このライブラリは、Android によってレンダリングされる要素と属性のみをサポートすることで、コードをより理解しやすくし、エラーを起こしにくくするためのシンタックス シュガーを提供します。
HTML の作成例:
textView.setHtml {
h3("Android Versions:")
ul {
li {
a(href = "https://developer.android.com/about/versions/12/get") {
+"Android 12 Beta"
}
}
li("Android 11")
li("Android 10")
li("Pie")
li("Oreo")
li("Nougat")
li("Marshmallow")
li("Lollipop")
// ...
}
small {
sub {
+"by "
a {
href = "https://github.com/jaredrummler"
text = "Jared Rummler"
}
}
}
}
Android でサポートされている HTML 要素TextView
:
<a href="...">
<b>
<big>
<blockquote>
<br>
<cite>
<dfn>
<div align="...">
<em>
<font color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i>
<img src="...">
<p>
<small>
<strike>
<strong>
<sub>
<sup>
<tt>
<u>
<ul>
<li>