web-dev-qa-db-ja.com

実行時にTextViewのスタイルを変更する方法

ユーザーがTextViewをタップしたときに、定義済みのスタイルを適用したいAndroidアプリがあります。

textview.setStyle()を見つけようとしましたが、存在しません。私は試した

textview.setTextAppearance();

しかし、それは機能しません。

97
Cris

これを行うには、次のように新しいXMLファイルres/values/style.xmlを作成しました。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="boldText">
        <item name="Android:textStyle">bold|italic</item>
        <item name="Android:textColor">#FFFFFF</item>
    </style>

    <style name="normalText">
        <item name="Android:textStyle">normal</item>
        <item name="Android:textColor">#C0C0C0</item>
    </style>

</resources>

「strings.xml」ファイルにも次のようなエントリがあります。

<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>

次に、私のコードでClickListenerを作成して、そのTextViewのタップイベントをトラップします。EDIT:Asから23「setTextAppearance」は非推奨です

    myTextView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view){
                    //highlight the TextView
                    //myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    if (Build.VERSION.SDK_INT < 23) {
       myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
    } else {
       myTextView.setTextAppearance(R.style.boldText);
    }
     myTextView.setBackgroundResource(R.color.highlightedTextViewColor);
                }
            });

元に戻すには、これを使用します。

if (Build.VERSION.SDK_INT < 23) {
    myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
   myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
141
Glenn

Jonathanが示唆したように、textView.setTextTypefaceの使用は機能しますが、数秒前にアプリで使用しました。

textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
90
DKDiveDude
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);

あなたはコードからそれを設定します。 書体

12
Azhar

プログラムで:実行時間

SetTypeface()を使用してプログラムで実行できます。

textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text
textView.setTypeface(null, Typeface.BOLD);        // for Bold only
textView.setTypeface(null, Typeface.ITALIC);      // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

XML:設計時

XMLで設定することもできます。

Android:textStyle="normal"
Android:textStyle="normal|bold"
Android:textStyle="normal|italic"
Android:textStyle="bold"
Android:textStyle="bold|italic"

これが役立つことを願って

要約

4
Summved Jain

textView.setTypeface(Typeface.DEFAULT_BOLD);が最も簡単な方法であることがわかりました。

2
sfera

このコード行を試してください。

textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);

ここでは、このテキストビューから現在の書体を取得し、新しい書体を使用して置き換えます。ここの新しい書体はDEFAULT_BOLDですが、さらに多くを適用できます。

1

設定するスタイルに応じて、異なる方法を使用する必要があります。 TextAppearanceには独自のセッターがあり、TypeFaceには独自のセッターがあり、背景には独自のセッターがあります。

0
akohout

TextViewのsetText()のdocoを参照してください http://developer.Android.com/reference/Android/widget/TextView.html

文字列のスタイルを設定するには、Android.text.style。*オブジェクトをSpannableStringに添付するか、XMLリソースファイルで書式設定されたテキストを設定する例について、利用可能なリソースタイプのドキュメントをご覧ください。

0
GSree