Есть ли способ установить 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" />
Ответы:
setTypeface является атрибутом textStyle.
Как добавил Шанкар V , для сохранения ранее установленных атрибутов гарнитуры вы можете использовать:
источник
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
textview.getTypeface().getStyle()
этоandroid:textStyle
Допустим, у вас есть стиль RedHUGEText в вашем values / styles.xml:
Просто создайте ваш TextView как обычно в файле XML layout / your_layout.xml, скажем так:
И в коде Java вашей деятельности вы делаете это:
Это сработало для меня! И он применял цвет, размер, гравитацию и т. Д. Я использовал его на мобильных телефонах и планшетах с уровнями API Android от 8 до 17 без проблем. Обратите внимание, что с Android 23 этот метод устарел. Аргумент context был отброшен, поэтому последняя строка должна быть:
Помните ... это полезно, только если стиль текста действительно зависит от условий вашей логики Java или вы создаете пользовательский интерфейс "на лету" с помощью кода ... если это не так, лучше просто делать:
Вы всегда можете иметь это по-своему!
источник
<style>
теге. Он выполняет общие (размер, цвет, стиль), но не применяет другие (включая отступы, фон, гравитацию и т. Д.)Ищите
setTextAppearance
или тожеsetTextTypeface
. Существует аналогичный вопрос о stackoverflow: как изменить стиль TextView во время выполненияисточник
Так много способов для достижения этой задачи некоторые из них ниже:
1.
2.
3.
4.
или если хочешь через xml
источник
•
Kotlin Version
Чтобы сохранить текущий шрифт в дополнение к стилю текста:
источник
Этот вопрос задается во многих местах по-разному. Первоначально я ответил на это здесь, но я чувствую, что это актуально и в этой теме (так как я оказался здесь когда искал ответ).
Нет единого решения этой проблемы, но это сработало для моего варианта использования. Проблема в том, что конструктор View (context, attrs, defStyle) не ссылается на фактический стиль, ему нужен атрибут. Итак, мы будем:
В 'res / values / attrs.xml' определите новый атрибут:
В res / values / styles.xml 'я собираюсь создать стиль, который я хочу использовать в моем пользовательском TextView
В 'res / values / themes.xml' или 'res / values / styles.xml' измените тему для своего приложения / действия и добавьте следующий стиль:
Наконец, в вашем пользовательском TextView теперь вы можете использовать конструктор с атрибутом, и он получит ваш стиль
Стоит отметить, что я неоднократно использовал customTextView в разных вариантах и в разных местах, но ни в коем случае не требуется, чтобы имя представления соответствовало стилю, атрибуту или чему-либо еще. Кроме того, этот метод должен работать с любым пользовательским представлением, а не только с TextViews.
источник
Это сработало для меня
или
источник
Я решил это двумя простыми методами.
Следуйте объяснениям.
Моя существующая декларация стиля:
Мой Android Java код:
С уважением.
источник
Вы можете попробовать это
источник
Поскольку
setTextAppearance(resId)
доступно только для API 23 и выше, используйте:TextViewCompat.setTextAppearance(textViewGoesHere, resId)
Этот метод реализован следующим образом:
источник
Как уже упоминалось здесь , эта функция не поддерживается.
источник