Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/98: Рейтинг темы: голосов - 98, средняя оценка - 4.52
20 / 20 / 8
Регистрация: 02.10.2012
Сообщений: 124

Сменить шрифт в TextView

24.09.2013, 01:27. Показов 19570. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сменить шрифт в TextView?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.09.2013, 01:27
Ответы с готовыми решениями:

Сторонний шрифт для TextView
Возникла такая проблема, ставлю собственный шрифт для TextView используя метод setTypeface, все нормально работает только для тех TextView,...

Текст из TextView перенести в другой TextView по нажатию Button
Люди, помогите плиз. Недавно начал ковырять программирование под Android. Хотел сделать банальную вещь - текст из TextView перенести в...

TextView txt = new TextView(this); - ошибка
Возникла проблема с динамическим создание TextView в цыкле, хотя в другом месте создается таким же образом все нормально TextView txt =...

24
 Аватар для Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
24.09.2013, 01:42
Java
1
2
3
TextView tv = (TextView) findViewById(R.id.textView1);
Typeface face = Typeface.createFromAsset(getAssets(), "yourfont.ttf");
tv.setTypeface(face);
yourfont.ttf положить в папку assets.
2
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
07.05.2014, 15:53
А куда этот код прописать?!
0
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 31
08.05.2014, 13:53
Цитата Сообщение от kolodiazniy Посмотреть сообщение
А куда этот код прописать?!
В MainActivity.java, в методе onCreate.
0
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
09.05.2014, 09:48
Я так и сделал.
Но приложение пишет "Unfortunately, my_app has stopped" после чего закрывается (
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
10.05.2014, 04:34
Netscape У меня заработало - сменил шрифт на кнопке... но можно ли подменить шрифт для всей программы или для целого активити?
0
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
10.05.2014, 10:43
А какой шрифт использовали?
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
10.05.2014, 11:40
Цитата Сообщение от kolodiazniy Посмотреть сообщение
А какой шрифт использовали?
дал глобальный поиск по всем опенсорс коллекциям у меня на компе... нашел AeroviasBrasilNF.ttf как сильно не стандартный("кривые буквы" - легко заметить разницу). По идее можно вроде любой!

Добавлено через 3 минуты
Вроде здесь есть: http://www.1001fonts.com/aerov... -font.html
0
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
10.05.2014, 16:16
Да, дело не в шрифте - это я уже выяснил.
Logcat ругается на третью строку кода - tv.setTypeface(face);
Если её закоментарить - ошибка исчезает, но и шрифт не изменяется.

Знающие люди, подскажите в чём дело!!!
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
10.05.2014, 16:55
Цитата Сообщение от kolodiazniy Посмотреть сообщение
подскажите в чём дело
У меня это работает! А значит ошибка не здесь!
Возможно Вы не правильный реквизит указали здесь:
TextView tv = (TextView) findViewById(R.id.textView1);
Вместо textView1? Возможно его не получается найти...
У меня работало даже когда забыл определить Typeface face! Просто не меняло шрифт...
0
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
10.05.2014, 17:22
Не получалось бы найти - Logcat ругался бы на 1-ю строчку. А он ругается на 3-ю.
0
 Аватар для Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
10.05.2014, 21:32
Tester64, красивое решение я подсмотрел здесь:
https://github.com/johnkil/Android-RobotoTextView
и теперь не парюсь насчет установки шрифта в коде.
1
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
10.05.2014, 22:21
Цитата Сообщение от Tester64 Посмотреть сообщение
У меня это работает! А значит ошибка не здесь!
У меня работало даже когда забыл определить Typeface face! Просто не меняло шрифт...
А не затруднит ли вам выслать мне ваш исходник?
Простейший, но чтобы в вашем Eclipse проверен был и работал.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
11.05.2014, 03:38
Цитата Сообщение от kolodiazniy Посмотреть сообщение
выслать мне ваш исходник
Я работаю в Студии. На код это не влияет, но в еклипс импортировать сложнее... Да и проект уже больше мегабайта исходников...
Лучше Вы вышлите Ваш исходник - смогу поискать ошибки через блокнот

Добавлено через 4 минуты
Цитата Сообщение от kolodiazniy Посмотреть сообщение
Не получалось бы найти - Logcat ругался бы на 1-ю строчку. А он ругается на 3-ю.
Не обязательно! Если не нашел, то
TextView tv = (TextView) findViewById(R.id.textView1);
tv == null. Что можно обработать как исключение... а использовать уже нельзя

Добавлено через 30 минут
Цитата Сообщение от Netscape Посмотреть сообщение
красивое решение я подсмотрел здесь
У мене не запустился! грандл со своими странностями - я еще не разобрался... попробую еще раз позднее когда будет время на изучение грандле...
можете намекнуть что искать? Кода слишком много что-бы в блокноте изучать, а APK так и не получил. Даже встроенный gradlew.bat не помог...
0
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
11.05.2014, 12:44
Цитата Сообщение от Tester64 Посмотреть сообщение
Я работаю в Студии
А я работаю дома )))

Цитата Сообщение от Tester64 Посмотреть сообщение
Лучше Вы вышлите Ваш исходник
Ничего, что можно было бы назвать громким словом "исходник" у меня нет.
Мой код состоит всего из 3-х строк, вписанных в цикл "onCreate" - и те не работают!
Вот весь цикл:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        TextView tv = (TextView) findViewById(R.id.textView1);
        Typeface face = Typeface.createFromAsset(getAssets(), "fonts/my_font.ttf");
        tv.setTypeface(face);  
        
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }}
Если же изучить Logcat, можно найти запись:
Caused by: java.lang.NullPointerException at com.example.my_app.MainActivity.onCreate (MainActivity.java: 23)
А 23-я строчка - это tv.setTypeface(face);
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
11.05.2014, 15:03
Цитата Сообщение от kolodiazniy Посмотреть сообщение
Я работаю в Студии
А я работаю дома )))
Я тоже дома))
Речь шла о AndroidStudio! Это принципиально отличается от Эклипса. Другой метод хранения папок, другой механизм компиляции. Обычно сильно не совместимы друг с другом папки исходников. Даже Java файлы иногда по разному ругаются - на разные ошибки... Я знаю как папку из элипса импортировать в студию, но не знаю насколько проблематично студию в эклипс...

Цитата Сообщение от kolodiazniy Посмотреть сообщение
Ничего, что можно было бы назвать громким словом "исходник" у меня нет
Все равно папка с исходниками читабельнее одного кусочка в текстовике...
1) Как я уже говорил... убедитесь что textView1 правильно нашли...
Попробуйте сразу после TextView tv = (TextView) findViewById(R.id.textView1); вставить
tv.setText("Hello!");
если не получится - фонт не виноват
2) уберите слово fonts/! извращаться потом будете. И не уверен что подобное вообще заработает...
3) убедитесь что my_font.ttf лежит в корневой папке assets и является шрифом.
0
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
11.05.2014, 16:27
Цитата Сообщение от Tester64 Посмотреть сообщение
... убедитесь что my_font.ttf лежит в корневой папке assets и является шрифом.
Убедися. Со шрифтом всё нормально.

Цитата Сообщение от Tester64 Посмотреть сообщение
Попробуйте сразу после TextView tv = (TextView) findViewById(R.id.textView1); вставить
tv.setText("Hello!");
если не получится - фонт не виноват
Не получилось (((
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
11.05.2014, 16:49
Цитата Сообщение от kolodiazniy Посмотреть сообщение
Не получилось (((
Значит у Вас нет TextView-элемента textView1 на этом активити (в XML файле).
0
 Аватар для Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
11.05.2014, 16:51
Tester64, та не особо там много кода:
отвечает за установку шрифтов:
https://github.com/johnkil/And... nager.java
кастомный TextView:
https://github.com/johnkil/And... tView.java
кастомные атрибуты:
https://github.com/johnkil/And... /attrs.xml
ну и собственно пример:
https://github.com/johnkil/And... y_main.xml

вот так объявляется TextView:
XML
1
2
3
4
5
6
<com.devspark.robototextview.widget.RobotoTextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:typeface="roboto_thin_italic"
                    android:textSize="22sp"
                    android:text="Thin Italic"/>
собственно установка шрифта:
app:typeface="roboto_thin_italic"
1
 Аватар для kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
11.05.2014, 17:36
В том-то и дело, что есть (

Решил упростить задачу: прописал в onCreate всего 2 ))) строчки.
Java
1
2
TextView myTextView = (TextView) findViewById(R.id.myText);
myTextView.setText("New text in TextView");
При этом Fragment_myapp.xml выглядит как надо:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.my.My$PlaceholderFragment" >
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        android:id="@+id/myText"/>
</RelativeLayout>
И что? А всё то же - ругается на вторую строчку кода:
Caused by: java.lang.NullPointerException com.example.my.My.onCreate (My.java:21)

Стоит её закоментарить - и всё ОК.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2014, 17:36
Помогаю со студенческими работами здесь

Не могу сменить шрифт в системе
Какое-то время назад ни с того, ни с сего сменился шрифт в системе. Дефолтный был Segoe UI обычный, теперь стоит Segoe UI тонкий. Я пытался...

Как сменить шрифт в SanctuaryRPG
Добрый день, я решил для себя русифицировать SanctuaryRPG, но там используется шрифт Terminal который не поддерживает кириллицу и...

Не получается сменить шрифт в окнах
Не получается поменять шрифт в окнах-формах. Ставлю Lucida Console везде, где только можно. Шрифт подписей, заголовков и прочего меняется,...

Как сменить шрифт в консольном приложении?
вот пытался поменять шрифт так, вышло то что видите, шрифт стал гигантским, обратно не возвращается, менял размер шрифта и окна толку ноль,...

Какой командой сменить шрифт в консоли?
подскажите пожалуйста как сменить имя шрифта в консоли командой?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru