Я создаю textView программно. Есть ли способ установить стиль этого textView? Что-то похожее
style="@android:style/TextAppearance.DeviceDefault.Small"
который я бы использовал, если бы у меня был файл layout.xml
.
Я создаю textView программно. Есть ли способ установить стиль этого textView? Что-то похожее
style="@android:style/TextAppearance.DeviceDefault.Small"
который я бы использовал, если бы у меня был файл layout.xml
.
Вы не можете программно установить стиль представления, но вы можете сделать что-то вроде textView.setTextAppearance(context, android.R.style.TextAppearance_Small);
.
В настоящее время невозможно установить стиль представления программно.
Чтобы обойти это, вы можете создать XML-файл макета шаблона с назначенным стилем, например, в res/layout
создать tvtemplate.xml
as со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is a template"
style="@android:style/TextAppearance.DeviceDefault.Small" />
затем раздуйте это, чтобы создать экземпляр вашего нового TextView:
TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
На самом деле это возможно с уровня API 21.
TextView имеет конструктор с 4 параметрами:
TextView (Context context,
AttributeSet attrs,
int defStyleAttr,
int defStyleRes)
Два средних параметра в этом случае не нужны. Следующий код создает TextView непосредственно в действии и определяет только его ресурс стиля:
TextView myStyledTextView = new TextView(this, null, 0, R.style.my_style);
Совместимая версия (из-за устаревания в API 23):
TextViewCompat.setTextAppearance(textView, android.R.style.TextAppearance_DeviceDefault_Small);
Попробуй это
textview.setTextAppearance(context, R.style.yourstyle);
это может не сработать, попробуйте создать xml с таким текстовым представлением
textviewstyle.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.DeviceDefault.Small" />
Чтобы получить желаемый стиль, раздуйте xml, содержащий textview
TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvstyle, null);
Для представлений, сгенерированных во время выполнения (в коде), вы можете передать стиль конструктору: View(Context, AttributeSet, int)
В другом случае вам нужно вызвать различные методы для изменения внешнего вида.
@Deprecated
public void setTextAppearance(Context context, @StyleRes int resId)
Этот метод устарел, начиная с Android SDK 23.
Вы можете использовать безопасную версию:
if (Build.VERSION.SDK_INT < 23) {
super.setTextAppearance(context, resId);
} else {
super.setTextAppearance(resId);
}
textView.setTextAppearance(context, android.R.style.TextAppearance_Small);
устарел в java, поэтому используйте его без контекста для kotlin
textView.setTextAppearance(android.R.style.TextAppearance_Small)