TextView
의 내용을 굵게, 기울임 꼴 및 밑줄로 표시하고 싶습니다 . 다음 코드를 시도했지만 작동하지만 밑줄이 없습니다.
<Textview android:textStyle="bold|italic" ..
어떻게합니까? 빠른 아이디어가 있습니까?
TextView
의 내용을 굵게, 기울임 꼴 및 밑줄로 표시하고 싶습니다 . 다음 코드를 시도했지만 작동하지만 밑줄이 없습니다.
<Textview android:textStyle="bold|italic" ..
어떻게합니까? 빠른 아이디어가 있습니까?
답변:
밑줄은 모르지만 대담하고 기울임 꼴이 있습니다 "bolditalic"
. 여기에 밑줄에 대한 언급은 없습니다 : http://developer.android.com/reference/android/widget/TextView.html#attr_android:textStyle
bolditalic
필요한 언급을 사용하려면 해당 페이지에서 인용하십시오.
다음 상수 값 중 하나 이상 ( '|'으로 구분)이어야합니다.
그래서 당신은 사용합니다 bold|italic
이 질문에 밑줄을 표시 할 수 있습니다 : 안드로이드 레이아웃에서 텍스트에 밑줄 을 그을 수 있습니까?
textView.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
이렇게하면 TextView가 굵게 , 밑줄 및 기울임 꼴로 표시 됩니다.
strings.xml
<resources>
<string name="register"><u><b><i>Copyright</i></b></u></string>
</resources>
이 문자열을 TextView로 설정하려면 main.xml 에서 수행하십시오.
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/register" />
또는 JAVA ,
TextView textView = new TextView(this);
textView.setText(R.string.register);
동적 텍스트를 사용해야 할 때 위의 방법이 도움이되지 않는 경우가 있습니다. 이 경우 SpannableString 이 작동합니다.
String tempString="Copyright";
TextView text=(TextView)findViewById(R.id.text);
SpannableString spanString = new SpannableString(tempString);
spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.BOLD), 0, spanString.length(), 0);
spanString.setSpan(new StyleSpan(Typeface.ITALIC), 0, spanString.length(), 0);
text.setText(spanString);
산출
new StyleSpan(Typeface.BOLD_ITALIC)
또는 Kotlin에서 다음과 같이하십시오.
val tv = findViewById(R.id.textViewOne) as TextView
tv.setTypeface(null, Typeface.BOLD_ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD or Typeface.ITALIC)
// OR
tv.setTypeface(null, Typeface.BOLD)
// OR
tv.setTypeface(null, Typeface.ITALIC)
// AND
tv.paintFlags = tv.paintFlags or Paint.UNDERLINE_TEXT_FLAG
또는 Java에서 :
TextView tv = (TextView)findViewById(R.id.textViewOne);
tv.setTypeface(null, Typeface.BOLD_ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD|Typeface.ITALIC);
// OR
tv.setTypeface(null, Typeface.BOLD);
// OR
tv.setTypeface(null, Typeface.ITALIC);
// AND
tv.setPaintFlags(tv.getPaintFlags()|Paint.UNDERLINE_TEXT_FLAG);
간단하고 한 줄로 유지하십시오 :)
paintFlags
필요? 그것없이 작동합니다
대담하고 기울임 꼴로 수행하는 작업은 코드 다음 밑줄 사용에 적합합니다
HelloAndroid.java
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.style.UnderlineSpan;
import android.widget.TextView;
public class HelloAndroid extends Activity {
TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textview = (TextView)findViewById(R.id.textview);
SpannableString content = new SpannableString(getText(R.string.hello));
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
textview.setText(content);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"
android:textStyle="bold|italic"/>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HelloAndroid!</string>
<string name="app_name">Hello, Android</string>
</resources>
underline
대신 Null 값 을 제거하려면new UnderlineSpan()
content.setSpan(null, 0, content.length(), 0);
다른 설정을 유지하면서 밑줄을 추가하는 쉬운 방법입니다.
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
프로그램 :
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 :
다음과 같이 XML 파일에서 직접 설정할 수 있습니다.
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
파일이나 네트워크에서 해당 텍스트를 읽는 경우
언급 한 것처럼 텍스트에 HTML 태그를 추가하여 얻을 수 있습니다.
This text is <i>italic</i> and <b>bold</b>
and <u>underlined</u> <b><i><u>bolditalicunderlined</u></b></i>
그런 다음 HTML 문자열을 처리 하는 HTML 클래스를 표시 가능한 스타일의 텍스트로 사용할 수 있습니다 .
// textString is the String after you retrieve it from the file
textView.setText(Html.fromHtml(textString));
당신은 코 틀린의를 사용하여 쉽게 달성 할 수있는 buildSpannedString{}
그 아래에 core-ktx
의존.
val formattedString = buildSpannedString {
append("Regular")
bold { append("Bold") }
italic { append("Italic") }
underline { append("Underline") }
bold { italic {append("Bold Italic")} }
}
textView.text = formattedString