5

TextView要素がフォーマットされた形式でテキストを表示するかどうかの「ルール」について少し混乱しています。

のような文字列

"There are <i>different ways</i> of coding.\n";

コーディング時にフォーマット(HTMLコードを含む)なしで表示される

tvMyTextView.setText("There are <i>different ways</i> of coding.\n");

しかし、strings.xmlで同じ文字列を定義してからロードすると

tvMyTextView.setText(R.strings.TestString);

強調表示されます。

ここのようなTextViewにURLを埋め込もうとすると、さらに混乱します。

"Click <a href="http://www.poon-world.com">here</a> to switch on the red light.\n";

言うまでもなく、私はすでにTextViewのさまざまなプロパティオプションを試しましたが、何かを見逃さない限り、それらは大きな違いをもたらさないようです。場合によっては、URLがテキストに青色でエンコードされてクリックできる場合もあれば、HTML形式が表示される場合もあります。また、色でエンコードされており、URLがテキストにエンコードされているように見えますが、クリックしても何も起こりません。URLの埋め込みに関しては、「単純な」HTML形式を使用した他の例とは異なり、これまでのところ、機能する場合と機能しない場合のルールを見つけることさえできませんでした。誰かが私の頭の結び目を解くのを手伝ってくれませんか。

4

3 に答える 3

5

実際、Android ドキュメントから..

public final void setText (CharSequence text)

TextView の文字列値を設定します。TextView は HTML のような書式設定を受け付けません。これは、XML リソース ファイル内のテキスト文字列で行うことができます。文字列のスタイルを設定するには、android.text.style.* オブジェクトを SpannableString にアタッチするか、XML リソース ファイルで書式設定されたテキストを設定する例について、利用可能なリソース タイプのドキュメントを参照してください。

しかし、

public final void setText (int resid)
  • それ以上の仕様はありません..

しかし、Android リソース文字列のドキュメントから..

HTML マークアップを使用して、文字列にスタイルを追加できます。例えば:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome">Welcome to <b>Android</b>!</string>
</resources>

サポートされている HTML 要素は次のとおりです。

<b> for bold text.
<i> for italic text.
<u> for underline text.

フォーマット文字列としても使用されるスタイル付きテキスト リソースを作成したい場合があります。String.format(String, Object...)メソッドは文字列からすべてのスタイル情報を削除するため、通常、これは機能しません。これを回避するには、エンティティをエスケープして HTML タグを記述しfromHtml(String)、書式設定後に で復元します。

URL文字列については...

tvMyTextView.setText(Html.fromHtml("Click <a href="http://www.poon-world.com">here</a> to switch on the red light.\n"));

また、この SO Question Set TextView text from html-formatted string resource in XMLも見てください。

Android 文字列リソース

于 2012-06-16T10:49:56.773 に答える
3
tvMyTextView.setText(Html.fromHtml("There are <i>different ways</i> of coding.\n"));

また試してみてください

以下のリンクlinkifyの場合、自動的にWebサイトのリンクが割り当てられます。

http://developer.android.com/resources/articles/wikinotes-linkify.html

于 2012-06-16T10:11:42.377 に答える
0

私自身の質問にいくつかのメモを追加し、これまでに回答を受け取った後、どこでも機能する信頼できる方法はないように思われると結論付けることができます.

場合によっては - 私の経験によると、フォーマットされた URL がプレーンテキストの一部であり、タグで囲まれていない場合 ( http://www.poon-world.comのように、「 Poon-World.com 」だけでも機能するようです)ほとんどの場合)、TextView のプロパティを設定するだけで十分なようで、リンクをクリックできるようになります。ただし、リンクが HTML タグに埋め込まれていて、何らかのリンク テキストからクリックできるようになっている場合は、Html.fromHtml(..) を使用するしかないようです。

ただし、説明できない特殊なケースもいくつかあります。一部のアクティビティ/レイアウトでは、「埋め込み」URL を使用しており、前述のクリック プロパティを設定していますが、Html.fromHtml を使用しないでください。テキスト内の実際に作成されたリンクをクリックすると、実際にブラウザーが開きますが、OnCreate-Event のコードに次の行を追加した後でのみです。

myTextView.setMovementMethod(LinkMovementMethod.getInstance());

(著者のおかげで、別のスレッドでこのトリックを見つけました) 理由はわかりません。文字列リソースが Android によって解析および評価される方法のようです。すでに述べたすべてのことに加えて、解決策を探して混乱している他のすべての人が、彼が頭がおかしくなり始めていると思い始めないようにすることを述べました-いいえ、このページでここに記載されているアプローチをテストしてください。いい結果。

于 2012-06-20T09:31:35.897 に答える