Comments 24
Не соглашусь :-)
1. На скриншоте все пункты меню подписаны. Достаточно 1 раз прочесть. Запомнить легко, так как последовательность очень логична.
2. Любой, кто работал с Андроид студией узнает все эти меню с первого взгляда.
1. На скриншоте все пункты меню подписаны. Достаточно 1 раз прочесть. Запомнить легко, так как последовательность очень логична.
2. Любой, кто работал с Андроид студией узнает все эти меню с первого взгляда.
Я постарался сделать скрин что-бы было максимально понятно куда нажимать, по подсветке вкладок все отлично видно. По моему мнению, второй способ реально быстрее, но вы вольны делать как вам угодно :)
Как по мне, лучший способ задать кастомный шрифт — сделать это в xml через DataBinding.
https://github.com/lisawray/fontbinding
Не надо наследоваться, нет зависимости от конкретной реализации TextView, не надо каждый раз писать boilerplate
https://github.com/lisawray/fontbinding
Не надо наследоваться, нет зависимости от конкретной реализации TextView, не надо каждый раз писать boilerplate
https://github.com/johnkil/Android-RobotoTextView
не кастомные шрифты, но для поддержки roboto на android < 4.1
не кастомные шрифты, но для поддержки roboto на android < 4.1
А чем не угодила библиотека https://github.com/chrisjenx/Calligraphy?
Это не самые важные проблемы. Для меня было неожиданностью следующее: 1) поддерживаются не все шрифты. Если шрифт не поддерживается, то будет использован стандартный. Проверить поддерживается ли шрифт нельзя. 2) нет поддержки файлов шрифтов с несколькими шрифтами внутри.
Вы забыли заресайклить TypedArray:
private void setFonts(AttributeSet attributeSet, Context context){
TypedArray a = context.getTheme().obtainStyledAttributes(
attributeSet,
R.styleable.CustomFontsTextView,
0, 0);
...
a.recycle(); // <- Here
}
во-первых наследоваться все же лучше от https://developer.android.com/reference/android/support/v7/widget/AppCompatTextView.html
а во-вторых вот здесь есть изящненький гайд
http://android-activities.blogspot.ru/2014/03/add-custom-behavior-to-standard-android.html
а во-вторых вот здесь есть изящненький гайд
http://android-activities.blogspot.ru/2014/03/add-custom-behavior-to-standard-android.html
Для создания кастомных вьюшек рекомендуется использовать классы из AppCompat. В данном случаи надо было наследоваться от AppCompatTextView.
На сколько мне известно, существует несколько способов применения шрифта к TextView: 1) наследование 2)проход по всей иерархии вью с поиском TextView с нужным атрибутам. 3) кастомный layoutInflaiter(как в каллиграфии) 4) датабиндинг. Неплохо было бы сравнить эти способы, говоря о шрифтах.
Вначале скажу что я разработчик со стажем Android 6 лет.
А теперь пару замечаний и как сделать правильнее.
Скажу честно, я делал как вы 4 года назад.
Ваши ошибки:
0) Зачастую в приложении используется не только TextView, а также банально Button и EditText. Судя по логике, вы будете создавать наследников и этих классов. Но, как только вам потребуется использовать какой то расширенный класс от данных (сторонние либы), то вам придется наследоваться и от них. Это плохой путь.
-Решение: Если вы создаете так называемые Support Class (ваши синглтончики) то разумнее создать метод TextUtils.setTypeface(view: TextView, font: String). Это решит проблему с множественным не нужным наследованием, так как Button и EditText являются наследниками TextView
1) Запомните, что лучше не расширять базовые классы вью без крайней необходимости! Лучше найти способы более изящные
-Решение 0: Calligraphy Lib
-Решение 1: DataBinding + BindingAdapter
-Решение 2: Kotlin + extension function
А теперь пару замечаний и как сделать правильнее.
Скажу честно, я делал как вы 4 года назад.
Ваши ошибки:
0) Зачастую в приложении используется не только TextView, а также банально Button и EditText. Судя по логике, вы будете создавать наследников и этих классов. Но, как только вам потребуется использовать какой то расширенный класс от данных (сторонние либы), то вам придется наследоваться и от них. Это плохой путь.
-Решение: Если вы создаете так называемые Support Class (ваши синглтончики) то разумнее создать метод TextUtils.setTypeface(view: TextView, font: String). Это решит проблему с множественным не нужным наследованием, так как Button и EditText являются наследниками TextView
1) Запомните, что лучше не расширять базовые классы вью без крайней необходимости! Лучше найти способы более изящные
-Решение 0: Calligraphy Lib
-Решение 1: DataBinding + BindingAdapter
-Решение 2: Kotlin + extension function
Sign up to leave a comment.
Шрифты для Android