프로그래밍 방식으로 textStyle
속성 을 설정하는 방법이 TextView
있습니까? 방법이없는 것 같습니다 setTextStyle()
.
명확히하기 위해 View / Widget 스타일에 대해 이야기하고 있지 않습니다! 나는 다음에 대해 이야기하고있다 :
<TextView
android:id="@+id/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World"
android:textStyle="bold" />
답변
textview.setTypeface(Typeface.DEFAULT_BOLD);
setTypeface는 속성 textStyle입니다.
Shankar V가 추가 한대로 이전에 설정 한 서체 속성을 유지하려면 다음을 사용할 수 있습니다.
textview.setTypeface(textview.getTypeface(), Typeface.BOLD);
답변
values / styles.xml에 RedHUGEText라는 스타일이 있다고 가정 해 보겠습니다.
<style name="RedHUGEText" parent="@android:style/Widget.TextView">
<item name="android:textSize">@dimen/text_size_huge</item>
<item name="android:textColor">@color/red</item>
<item name="android:textStyle">bold</item>
</style>
XML layout / your_layout.xml 파일에서 평소와 같이 TextView를 작성하십시오.
<TextView android:id="@+id/text_view_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content
android:text="FOO" />
그리고 활동의 Java 코드에서 다음을 수행하십시오.
TextView textViewTitle = (TextView) findViewById(R.id.text_view_title);
textViewTitle.setTextAppearance(this, R.style.RedHUGEText);
그것은 나를 위해 일했다! 색상, 크기, 중력 등을 적용했습니다. Android API 레벨이 8 ~ 17 인 핸드셋 및 태블릿에서 문제없이 사용했습니다. Android 23부터는 해당 메소드가 더 이상 사용되지 않습니다. 컨텍스트 인수가 삭제되었으므로 마지막 행은 다음과 같아야합니다.
textViewTitle.setTextAppearance(R.style.RedHUGEText);
기억하십시오 … 텍스트의 스타일이 실제로 Java 로직의 조건에 의존하거나 코드를 사용하여 UI를 “즉석에서”구축하는 경우에만 유용합니다. 그렇지 않은 경우에는 하다:
<TextView android:id="@+id/text_view_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content
android:text="FOO"
style="@style/RedHUGEText" />
당신은 항상 당신의 길을 가질 수 있습니다!
답변
setTextAppearance
또는을 검색하십시오 setTextTypeface
. stackoverflow에 비슷한 질문이 있습니다 : 런타임에 TextView의 스타일을 변경하는 방법
답변
이 작업을 수행하는 많은 방법은 다음과 같습니다.
1.
String text_view_str = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!";
TextView tv = (TextView)findViewById(R.id.ur_text_view_id);
tv.setText(Html.fromHtml(text_view_str));
2.
tv.setTypeface(null, Typeface.BOLD);
tv.setTypeface(null, Typeface.ITALIC);
tv.setTypeface(null, Typeface.BOLD_ITALIC);
tv.setTypeface(null, Typeface.NORMAL);
삼.
SpannableString spannablecontent=new SpannableString(o.content.toString());
spannablecontent.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC),
0,spannablecontent.length(), 0);
// set Text here
tt.setText(spannablecontent);
4.
<?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>
tv.setTextAppearance(getApplicationContext(), R.style.boldText);
또는 XML을 통해 원하는 경우
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
답변
• Kotlin Version
텍스트 스타일 외에 현재 글꼴을 유지하려면
textView.apply {
setTypeface(typeface, Typeface.NORMAL)
// or
setTypeface(typeface, Typeface.BOLD)
// or
setTypeface(typeface, Typeface.ITALIC)
// or
setTypeface(typeface, Typeface.BOLD_ITALIC)
}
답변
이 질문은 많은 다른 장소에서 많은 다른 방법으로 요구됩니다. 나는 원래 여기에 대답했지만이 스레드와 관련이 있다고 생각합니다 ( 답을 찾을 때 여기에 있었기 때문에 ).
이 문제에 대한 한 가지 해결책은 없지만 내 유스 케이스에서 효과가있었습니다. 문제는 ‘View (context, attrs, defStyle)’생성자가 실제 스타일을 참조하지 않고 속성을 원한다는 것입니다. 그래서 우리는 :
- 속성 정의
- 사용하려는 스타일 만들기
- 테마에 해당 속성에 대한 스타일 적용
- 해당 속성을 사용하여 뷰의 새 인스턴스를 만듭니다.
‘res / values / attrs.xml’에서 새 속성을 정의하십시오.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="customTextViewStyle" format="reference"/>
...
</resources>
res / values / styles.xml ‘에서 사용자 정의 TextView에 사용하려는 스타일을 작성하겠습니다.
<style name="CustomTextView">
<item name="android:textSize">18sp</item>
<item name="android:textColor">@color/white</item>
<item name="android:paddingLeft">14dp</item>
</style>
‘res / values / themes.xml’또는 ‘res / values / styles.xml’에서 애플리케이션 / 활동의 테마를 수정하고 다음 스타일을 추가하십시오.
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light">
<item name="@attr/customTextViewStyle">@style/CustomTextView</item>
</style>
...
</resources>
마지막으로, 사용자 정의 TextView에서 속성과 함께 생성자를 사용할 수 있으며 스타일을받습니다.
public class CustomTextView extends TextView {
public CustomTextView(Context context) {
super(context, null, R.attr.customTextView);
}
}
다른 변형과 다른 장소에서 customTextView를 반복해서 사용했다는 점은 주목할 가치가 있지만, 뷰의 이름이 스타일이나 속성 또는 다른 것과 일치 할 필요는 없습니다. 또한이 기술은 TextView뿐만 아니라 모든 사용자 정의보기에서 작동해야합니다.
답변
이것은 나를 위해 일했다
textview.setTypeface(textview.getTypeface(), Typeface.BOLD);
또는
textview.setTypeface(Typeface.DEFAULT_BOLD);