굵게, 기울임 꼴과 같은 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);
leocadiotine

34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);에서 굵은 체 또는 이탤릭체 스타일을 제거하지 않습니다 TextView. 당신은 그것을 사용해야 textView.setTypeface(null, Typeface.NORMAL);합니다.
Jarett Millard 2014

57
이전 서체를 유지하고 굵은 체 또는 이탤릭체를 제거하려면 다음 코드를 사용하십시오.textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
Shnkc

6
@Shnkc에게 감사합니다. 올바른 방향으로 나를 가리 켰습니다. 실제로 당신은 단지 필요합니다 : textView.setTypeface (Typeface.create (textView.getTypeface (), Typeface.NORMAL));
PedroHidalgo

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

setTypeface ()에 null을 전달하면 TextView가 이전에 설정 한 서체와 다른 하드 코딩 된 기본값을 사용합니다.
greg7gkb 05:31

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

6
질문 확인 with in Java and without using XML그건 그렇고 다른 사람들에게도 도움이 될 것입니다.
Pratik Butani

5
예. 나는 Google을 통해 여기에 왔으며 도움이되었습니다. 감사합니다 :)
Atul

96

두 가지 옵션이 있습니다.

옵션 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 :

스패너 블 사용 ; 더 복잡하지만 텍스트 속성 (굵게 / 이탈리아뿐 아니라 색상)을 동적으로 수정할 수 있습니다.


6
함께 typeFace사용하면 전체 텍스트 하나의 스타일을 설정할 수 있습니다.
Gabriel Negut

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

2
이 방법은 훌륭한 부분 텍스트 스타일링입니다. 큰 텍스트 뷰 안의 인용문처럼.
Salih Erikci

1
첫 번째 방법은 제 경우에는 작동하지 않습니다 private void createTextView (String title, String text) {textView = new TextView (this); textView.setTextSize (17); textView.setText (Html.fromHtml ( "<b>"+ title + "</ b>") + ":"+ text); }
garenyondem

1
레이아웃 재 계산으로 인해 텍스트가 큰 경우 spannable 및 fromHTML 옵션에서 / setText 입력 속도가 느려질 수 있습니다. 다른 방법을 사용할 수 있다면 피하십시오.
유진 카르 토 예프

42

프로그래밍 방식으로 :

프로그래밍 방식으로 사용할 수 있습니다 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"

또는 자산에서 즐겨 찾기 글꼴을 설정할 수 있습니다. 자세한 내용은 링크를 참조하십시오


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 자바 코드로 스타일 을 설정하려면 이것을 시도하십시오

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

당신이 할 수있는 한 가지 방법은 다음과 같습니다.

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 name="title"><u><b><i>Your Text</i></b></u></string>

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 Developers String Resources 스타일이 지정된 텍스트 리소스에 매개 변수를 사용해야하는 경우 여는 괄호를 피해야합니다

<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 (값 폴더)에서 직접 사용할 수 있습니다. 3) 문자열 myNewString = "이것은 굵은 체 텍스트 입니다. 이탤릭체 문자열 입니다. 밑줄 친 문자열입니다.


0

아래 예를 사용하여 다른 서체를 설정할 수 있습니다-

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

또는 다른 글꼴과 서체를 설정하려는 경우. 자산 또는 원시 폴더에 추가 한 다음처럼 사용하십시오.

  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.