Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/53: Рейтинг темы: голосов - 53, средняя оценка - 4.89
Last_Night
20 / 20 / 8
Регистрация: 02.10.2012
Сообщений: 124
#1

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

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

Как сменить шрифт в TextView?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 01:27
Ответы с готовыми решениями:

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

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

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

TextView бд
Подскажите можно ли на прямую вызвать из бд в TextView текст?

Обратиться к TextView
Можно из просто класса public class MyClass { } из статического метода...

24
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
24.09.2013, 01:42 #2
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 #3
А куда этот код прописать?!
0
rus_artur4ik
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 31
08.05.2014, 13:53 #4
Цитата Сообщение от kolodiazniy Посмотреть сообщение
А куда этот код прописать?!
В MainActivity.java, в методе onCreate.
0
kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
09.05.2014, 09:48 #5
Я так и сделал.
Но приложение пишет "Unfortunately, my_app has stopped" после чего закрывается (
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
10.05.2014, 04:34 #6
Netscape У меня заработало - сменил шрифт на кнопке... но можно ли подменить шрифт для всей программы или для целого активити?
0
kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
10.05.2014, 10:43 #7
А какой шрифт использовали?
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
10.05.2014, 11:40 #8
Цитата Сообщение от kolodiazniy Посмотреть сообщение
А какой шрифт использовали?
дал глобальный поиск по всем опенсорс коллекциям у меня на компе... нашел AeroviasBrasilNF.ttf как сильно не стандартный("кривые буквы" - легко заметить разницу). По идее можно вроде любой!

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

Знающие люди, подскажите в чём дело!!!
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
10.05.2014, 16:55 #10
Цитата Сообщение от 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 #11
Не получалось бы найти - Logcat ругался бы на 1-ю строчку. А он ругается на 3-ю.
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
10.05.2014, 21:32 #12
Tester64, красивое решение я подсмотрел здесь:
https://github.com/johnkil/Android-RobotoTextView
и теперь не парюсь насчет установки шрифта в коде.
1
kolodiazniy
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 18
10.05.2014, 22:21 #13
Цитата Сообщение от Tester64 Посмотреть сообщение
У меня это работает! А значит ошибка не здесь!
У меня работало даже когда забыл определить Typeface face! Просто не меняло шрифт...
А не затруднит ли вам выслать мне ваш исходник?
Простейший, но чтобы в вашем Eclipse проверен был и работал.
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
11.05.2014, 03:38 #14
Цитата Сообщение от 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 #15
Цитата Сообщение от 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
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
11.05.2014, 15:03 #16
Цитата Сообщение от 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 #17
Цитата Сообщение от Tester64 Посмотреть сообщение
... убедитесь что my_font.ttf лежит в корневой папке assets и является шрифом.
Убедися. Со шрифтом всё нормально.

Цитата Сообщение от Tester64 Посмотреть сообщение
Попробуйте сразу после TextView tv = (TextView) findViewById(R.id.textView1); вставить
tv.setText("Hello!");
если не получится - фонт не виноват
Не получилось (((
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
11.05.2014, 16:49 #18
Цитата Сообщение от kolodiazniy Посмотреть сообщение
Не получилось (((
Значит у Вас нет TextView-элемента textView1 на этом активити (в XML файле).
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
11.05.2014, 16:51 #19
Tester64, та не особо там много кода:
отвечает за установку шрифтов:
https://github.com/johnkil/Android-R...ceManager.java
кастомный TextView:
https://github.com/johnkil/Android-R...oTextView.java
кастомные атрибуты:
https://github.com/johnkil/Android-R...lues/attrs.xml
ну и собственно пример:
https://github.com/johnkil/Android-R...ivity_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 #20
В том-то и дело, что есть (

Решил упростить задачу: прописал в 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
11.05.2014, 17:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 17:36

TextView and Fragment
Доброго времени суток . Очень странная проблема, в классе extends Fragment есть...

ViewPager и TextView
В приложении ViewPager и TextView. Все работает. Теперь нужно впихнуть во...

Стилизация TextView
Здравствуйте, возникло у меня вопрос, как можно сделать так, чтобы в TextView...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru