TextViewに完全に下線を付けたいのですが、<u>
動的テキストであるため、テキストリソースとタグを使用できません。
これまでのところ、これを行うために私が知っている唯一の方法は実行時です。これが本当に唯一の方法ですか?XMLファイルでそれを行う方法はありますか?
TextViewに完全に下線を付けたいのですが、<u>
動的テキストであるため、テキストリソースとタグを使用できません。
これまでのところ、これを行うために私が知っている唯一の方法は実行時です。これが本当に唯一の方法ですか?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);
}
次に、レイアウトで新しいコンポーネントを使用し、通常どおりテキストを設定するだけです。残りは自動的に処理されます。
カスタムコンポーネントの詳細: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(Bundle savedInstanceState)メソッドに次のコードを追加して、xmlファイルで定義したcreateAccountTextTextViewに設定したUIに下線付きで「アカウントの作成」を表示させ/res/layout/
ます。アクティビティ:
TextView createAccountText = (TextView) findViewById(R.id.createAccountText);
Resources res = getResources();
CharSequence styledText = res.getText(R.string.createAccount);
createAccountText.setText(styledText, TextView.BufferType.SPANNABLE);
peter3は、TextViewクラスを拡張し、setTextメソッドをオーバーライドするために以前に作成しました。
setTextメソッドがFINALとしてマークされているため、このソリューションは機能しません。
http://developer.android.com/reference/android/widget/TextView.html#setText(java.lang.CharSequence)
コードがいくつかの変更で機能するかどうかわからない。
SpannableString content = new SpannableString(name);
content.setSpan(new UnderlineSpan(), 0, name.length(), 0);
geometrical_textview.setText(content, TextView.BufferType.SPANNABLE);