太字、斜体などのTextView textStyleを設定する方法


843

TextViewJava内でXMLレイアウトを使用せずにスタイル(太字または斜体)を設定する方法は?

つまり、android:textStyleJavaで書く必要があります。

回答:


1885
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

以前の書体を保持するには

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)

5
スタイルを削除するにはTypeface.NORMAL使用することができます
Braisギャバン

351
その場合、以前の書体は失われます。以前のものを維持するには、textView.setTypeface(textView.getTypeface()、Typeface.BOLD_ITALIC);のようなことを行います。
レオカディオチン2013年

34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);から太字または斜体のスタイルを削除しませんTextViewtextView.setTypeface(null, Typeface.NORMAL);そのために使用する必要があります。
Jarett Millard、2014

58
以前の書体を維持するが、太字や斜体のスタイルを取り除くために、次のコードを使用:textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
Shnkc

6
@Shnkcに感謝します。あなたは私を正しい方向に向けました。実際に必要なものは次のとおりです。textView.setTypeface(Typeface.create(textView.getTypeface()、Typeface.NORMAL));
PedroHidalgo 2017

271

これを試してTextView、太字または斜体にします

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);

14
ちなみに、既存の書体スタイ​​ルをクリアしたい場合は、別の方法を実行する必要があります。例:tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
greg7gkb

@ greg7gkb tv.setTypeface(null, Typeface.BOLD);は同じことをしませんか(既存の書体スタイ​​ルをクリアします)?
Prabs

nullをsetTypeface()に渡すと、TextViewはハードコードされたデフォルトを使用しますが、これは以前に設定されたタイプフェイスとは異なる場合があります。
greg7gkb 2018年

142

プログラム的に:

あなたはプログラムを使って行うことができます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:

次の<TextView />ようにXMLファイルに直接設定できます:

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

11
質問者は、XMLレイアウトを使用せずにそれを行う方法を尋ねました。
JulianSymes 2013

6
with in Java and without using XMLちなみに質問をチェック他人にも参考になります。
Pratik Butani

5
はい。私はグーグル経由でここに来ました、そしてそれはちょうど私を助けました。ありがとう:)
Atul

96

次の2つのオプションがあります。

オプション1(太字、斜体、下線に対してのみ機能):

String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(Html.fromHtml(s));

オプション2:

Spannableを使用します。より複雑ですが、テキスト属性を動的に変更できます(太字/斜体だけでなく、色も)。


6
を使用typeFaceすると、テキスト全体に単一のスタイルを設定できます。
Gabriel Negut 2013

2
カスタム行で試してみると、理由がわかりませんか?String s1 = "<b>あなたがいる:</ b>"; holder.address =(TextView)convertView.findViewById(R.id.address_text_view); holder.address.setText(Html.fromHtml(s1)+ track.getAddress());
Shylendra Madda 2013

2
このメソッドは、優れた部分テキストスタイリングです。大きなテキストビュー内の引用のように。
Salih Erikci 14

1
最初のメソッドは私の場合には機能しませんprivate void createTextView(String title、String text){textView = new TextView(this); textView.setTextSize(17); textView.setText(Html.fromHtml( "<b>" + title + "</ b>")+ ":" + text); }
garenyondem 2015年

1
レイアウトの再計算が原因でテキストが大きい場合、spannableおよびfromHTMLオプションを使用すると、/ setTextの入力が遅くなることがあります。他の方法が利用可能な場合は、これを避けてください。
Eugene Kartoyev 2018年

43

プログラム的に:

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

カスタムの書体を設定したい場合:

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

XML:

次の<TextView />ようにXMLファイルに直接設定できます。

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

または、(アセットから)favフォントを設定できます。詳細については、リンクを参照してください


14
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);

次に、textviewプロパティを設定します。

text.setTypeface(null, Typeface.BOLD);  //-- for only bold the text
text.setTypeface(null, Typeface.BOLD_ITALIC);  //-- for  bold & italic the text
text.setTypeface(null, Typeface.ITALIC);  // -- for  italic the text

11

テキストを太字にしたい場合のみです。この行をレイアウトのテキストビュープロパティに記述します

android:textStyle="bold"

10
TextView text = (TextView)findViewById(R.layout.textName);
text.setTypeface(null,Typeface.BOLD);

10

それはそのようになります

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

そして、イタリックは、交換となることができるはずTypeface.DEFAULT_BOLDTypeface.DEFAULT_ITALC

仕組みを教えてください。


10

これを試してTextView 、Javaコードでスタイルを設定してください

txt1.setTypeface(null,Typeface.BOLD_ITALIC);


7

これを試して:

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);

6

これを試して:

TextView textview = (TextView)findViewById(R.id.textview_idname);
textview.setTypeface(null,Typeface.BOLD);

4

これを行う標準的な方法は、カスタムスタイルを使用することです。元

ではstyles.xml、以下を追加します。

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyApp.TextAppearance.LoginText">
    <item name="android:textStyle">bold|italic</item>
</style>

このスタイルをTextView次のように適用します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/MyApp.TextAppearance.LoginText" />

4

あなたができる1つの方法は:

myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);

以前の書体を保持し、以前に適用されたフォントを失いたくない場合の別のオプション:

myTextView.setTypeface(textView.getTypeface(), Typeface.NORMAL);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD);        
myTextView.setTypeface(textView.getTypeface(), Typeface.ITALIC);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); 

4
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

以前の書体を保持するには

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)


3

スタイル選択基準に基づいて実行できる最も簡単な方法は次のとおりです。

String pre = "", post = "";

if(isBold){
    pre += "<b>"; post += "</b>";
}
if(isItalic){
    pre += "<i>"; post += "</i>";
}
if(isUnderline){
    pre += "<u>"; post += "</u>";
}

textView.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
// you can also use it with EidtText
editText.setText(Html.fromHtml(pre + editText.getText().toString()+ post));

2

カスタムフォントを使用したいので、いくつかの回答の組み合わせのみが機能します。もちろん私の設定layout.xml等はandroid:textStlyle="italic"AOSによって無視されました。だから最後に私は次のようにしなければなりませんでした:strings.xmlターゲット文字列では次のように宣言されました:

<string name="txt_sign"><i>The information blah blah ...</i></string>

次に、コードでさらに:

TextView textSign = (TextView) findViewById(R.id.txt_sign);
FontHelper.setSomeCustomFont(textSign);
textSign.setTypeface(textSign.getTypeface(), Typeface.ITALIC);

私はSpannableオプションを試しませんでした(私は動作するはずです)が

textSign.setText(Html.fromHtml(getString(R.string.txt_sign))) 

効果はありませんでした。また、私は削除する場合italic tagからstrings.xml離れるsetTypeface()ことはどちらかの効果がありませんすべて一人で。トリッキーなAndroid ...


2

ここで説明するように、Android開発者の文字列リソーススタイル付きテキストリソースでパラメーターを使用する必要がある場合は、左角かっこをエスケープする必要があります

<resources>
<string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
</resources>

そして、formatHtml(string)を呼び出します

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);

2

私の場合:

1-テキストを設定

2-書体を設定

holder.title.setText(item.nome);
holder.title.setTypeface(null, Typeface.BOLD);

1

これは、OnePlus Slate™フォントで構成されたOnePlus 5Tで私のために機能した唯一のものです。

textView.setTypeface(Typeface.create(textView.getTypeface(), useBold ? Typeface.BOLD : Typeface.NORMAL));

他の方法では、BOLDまたはNORMALのいずれかの場合にRobotoにフォールバックします。


1

AndroidXで簡略化されたタグを使用している間、HtmlCompat.fromHtml()の使用を検討してください

String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"    
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(HtmlCompat.fromHtml(s, FROM_HTML_MODE_LEGACY));

0

最善の方法は、それを styles.xml

<style name="common_txt_style_heading" parent="android:style/Widget.TextView">
        <item name="android:textSize">@dimen/common_txtsize_heading</item>
        <item name="android:textColor">@color/color_black</item>
        <item name="android:textStyle">bold|italic</item>
</style>

そしてそれを更新する TextView

  <TextView
     android:id="@+id/txt_userprofile"
     style="@style/common_txt_style_heading"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerHorizontal="true"
     android:layout_marginTop="@dimen/margin_small"
     android:text="@string/some_heading" />

0
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);
text.setTypeface(null,Typeface.BOLD);

上記のメソッドを使用して、書体をプログラムで設定します。


0

1)TypeFaceで設定できます。2) strings.xml(valuesフォルダー内)で直接使用できます3)String myNewString = "これは私の太字のテキストですこれは私の斜体の文字列です これは私の下線付きの文字列です


0

以下の例を使用して、異なる書体を設定できます-

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);

または、別のフォントとその書体を設定したい場合。アセットまたはrawフォルダーに追加して、次のように使用します

  Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");
  tv1.setTypeface(face);

  Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
  tv2.setTypeface(face1);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.