5

TextView要素が書式設定された書式でテキストを表示するかどうかの「ルール」について少し混乱します。TextView用のHTML書式設定

(HTMLコードを含む)任意の書式なしの

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

ディスプレイ等

列Iは

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

をコーディング私はのstrings.xmlで同じ文字列を定義し、

をロード
tvMyTextView.setText(R.strings.TestString); 

強調表示されます。 TextViewのここのようにURLを埋め込むしようとしたとき

はさらに混乱して私が感じる:私はすでにのTextViewのさまざまなプロパティオプションを試してみましたと言って

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

言うまでもない - しかし、彼らはの多くを作るようには見えません。私が何かを逃していない限り、違い。場合によっては、URLは青色でテキストにエンコードされ、クリックすることができます。他の場合は、HTMLフォーマットを見ることができます。再度他のものでは、それは色分けされており、URLは何らかの形でテキストにエンコードされているようですが、それをクリックすると何も起こりません。 URLの埋め込みに関しては、「単純な」HTML書式設定の他の例とは異なり、動作していないときとそうでないときのどちらのルールも見つけられませんでした。誰もが私の頭の中で結び目をほどくために私を助けることができます。..

+0

これを試す MAC

答えて

5

実は、

public final void setText (CharSequence text) 

... Androidのドキュメントからの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質問Set TextView text from html-formatted string resource in XML

Android String Resource

0

を見てこれまでの回答を受けてからは、どこでも働く信頼できる方法がないように思えるだけです。

私の経験によれば、書式設定されたURLが平文の一部であり、タグで囲まれていない場合(ほとんどの場合、「Poon-World.com」でさえもhttp://www.poon-world.comなど) TextViewのプロパティを設定すると、リンクがクリック可能になります。しかし、リンクがHTMLタグに埋め込まれていて、リンクテキストからクリック可能と思われる場合は、Html.fromHtml(..)を使う以外の方法はないようです。

しかし私は説明できないいくつかの特別なケースもあります:いくつかのアクティビティ/レイアウトでは、 "埋め込み" URLを使用していて、前述のClickプロパティを設定しています。そして、テキストで実際に作成されたリンク上で実際にブラウザを開きますが、OnCreateのイベントにコードに次の行を追加した後にのみクリックを!驚き:(私は別で、このトリックを見つけ

myTextView.setMovementMethod(LinkMovementMethod.getInstance()); 

をスレッド、著者のおかげで)理由は分かりませんが、それは文字列リソースが解析され、Androidによって評価される方法と思われます。私は、すべてのことがすでに言われているので、解決策を探していて混乱してしまうように、彼は彼の心を失い始めているとは思っていません - いいえ、このページでここで述べたアプローチを試してみてください。いい結果になる。