TextViewに完全に下線を付けるようにしたいが、それは動的テキストであるためテキストリソースと<u>
タグを使用できない。Android:静的にTextViewの動的テキストに下線を付ける
関連:これまでのところCan I underline text in an android layout?
これを行うには、私が知っている唯一の方法は、実行時にあります。これは本当に唯一の方法ですか?私がXMLファイルでそれを行う方法はありますか?
TextViewに完全に下線を付けるようにしたいが、それは動的テキストであるためテキストリソースと<u>
タグを使用できない。Android:静的にTextViewの動的テキストに下線を付ける
関連:これまでのところCan I underline text in an android layout?
これを行うには、私が知っている唯一の方法は、実行時にあります。これは本当に唯一の方法ですか?私がXMLファイルでそれを行う方法はありますか?
最も簡単な解決策は、TextViewの由来カスタムUnderLineTextView・コンポーネントを作成するのsetText()をオーバーライドし、下線などテキスト全体を設定することが考えられ、このようなものです(上記のリンクの下線のコード)。
@Override
public void setText(CharSequence text, BufferType type) {
// code to check text for null omitted
SpannableString content = new SpannableString(text);
content.setSpan(new UnderlineSpan(), 0, text.length(), 0);
super.setText(content, BufferType.SPANNABLE);
}
これは単なるmaです新しいコンポーネントをレイアウトに使用し、テキストを通常どおりに設定します。残りは自動的に処理されます。カスタムコンポーネントの
さらに詳しい情報: http://developer.android.com/guide/topics/ui/custom-components.html
あなたはテキスト
Html.fromHtml(String source)以上の例を強調することができます
textView.setText(Html.fromHtml("this is <u>underlined</u> text"));
ご希望の場合にも、/res/values/string.xmlファイルを経由してこれを行うことができます。たとえば、/res/values/string.xmlあなたに以下のようなエントリを追加することができます。
<string name="createAccount"><u>Create Account</u></string>
そして、あなたの活動ののonCreate(バンドルsavedInstanceState)メソッドでは、あなたは、「アカウントの作成」が発生し、次のコードを追加します>あなたが設定UIに下線として表示されるようにあなたの活動の/ res/layout /内のxmlファイルで定義したcreateAccountText TextView:
TextView createAccountText = (TextView) findViewById(R.id.createAccountText);
Resources res = getResources();
CharSequence styledText = res.getText(R.string.createAccount);
createAccountText.setText(styledText, TextView.BufferType.SPANNABLE);
ダニー・レミントン - のTextViewクラスを拡張し、SetTextメソッドをオーバーライドする前にMacroSolve
getResources()。getText()は私の問題を解決しました。なぜ 'textView.setText(getResources() ).getString(R.string.string_id)); 'テキストには下線が引かれていませんでした。 –
peter3は書いています。
このソリューションは、setTextメソッドがFINALとしてマークされているため、機能しません。コードはいくつかの変更で動作することができれば
http://developer.android.com/reference/android/widget/TextView.html#setText(java.lang.CharSequence)
わかりません。
peter3が答えでオーバーライドするメソッドは、public final void setText(CharSequence text)ではなくpublic void setText(CharSequence text、TextView.BufferType type)です。ピーター3の方法は最終的なものではないと説明しています。 (少し遅れてコメントを追加しましたが、2度見なければなりませんでしたので、言及する価値があると思いました)。 – Stanley
SpannableString content = new SpannableString(name);
content.setSpan(new UnderlineSpan(), 0, name.length(), 0);
geometrical_textview.setText(content, TextView.BufferType.SPANNABLE);
最も単純なソリューションIMHO。 – gnac
「」タグと「」タグの括弧がエスケープされていないため、これは機能しません。適切な例については、http://stackoverflow.com/a/9955051/425183 – Ognyan
を参照してください実際には最も単純な解決法、txs – Hubert