6

TextViewに完全に下線を付けたいのですが、<u>動的テキストであるため、テキストリソースとタグを使用できません。

関連:Androidレイアウトでテキストに下線を付けることはできますか?

これまでのところ、これを行うために私が知っている唯一の方法は実行時です。これが本当に唯一の方法ですか?XMLファイルでそれを行う方法はありますか?

4

5 に答える 5

18

最も簡単な解決策は、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

于 2011-01-12T21:31:50.293 に答える
14

Html.fromHtml(String source)の上にテキストに下線を引くことができます

例:

textView.setText(Html.fromHtml("this is <u>underlined</u> text"));
于 2011-01-12T21:25:31.277 に答える
1

必要に応じて、ファイルを介してこれを行うこともでき/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);
于 2011-01-26T16:45:48.247 に答える
0

peter3は、TextViewクラスを拡張し、setTextメソッドをオーバーライドするために以前に作成しました。

setTextメソッドがFINALとしてマークされているため、このソリューションは機能しません。

http://developer.android.com/reference/android/widget/TextView.html#setText(java.lang.CharSequence)

コードがいくつかの変更で機能するかどうかわからない。

于 2015-03-03T22:45:55.747 に答える
0
 SpannableString content = new SpannableString(name);
 content.setSpan(new UnderlineSpan(), 0, name.length(), 0);
 geometrical_textview.setText(content, TextView.BufferType.SPANNABLE);
于 2016-04-22T00:44:31.193 に答える