Всем привет!
Сегодня я поделюсь с вами очень общей задачей. Как настроить ActionBar на Android. Мы изменим макет, шрифт, размер текста, цвет текста, добавим к нему прослушиватель, вернемся назад, скроем заголовок и домашний значок.
В конце у нас будет что-то вроде этого:
Что ж, давайте начнем с изменения некоторых настроек API.
Загрузка шрифта
Прежде всего, перейдите к 1001freefonts и загрузите шрифт, который вы хотите применить к своему тексту. Это свободно!
После загрузки создайте папку с именем font в папке assets в корне вашего проекта. (создайте его, если он еще не существует) Это выглядит так: имя проекта> assets> font> yourfont.fft
Создание пользовательских цветов
Мы хотим изменить цвет нашего шрифта также. Поэтому по этой причине создайте два цвета в вашем файле strings.xml следующим образом:
1
2
|
< color name = "selected" >#824986</ color > < color name = "unselected" >#E4DFEC</ color > |
Создание пользовательского макета ActionBar
Поскольку мы хотим настроить наш actionBar, нам нужно будет создать для него индивидуальный макет. Поэтому в папке макета создайте новый файл layout.xml с именем custom_action_bar.xml следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
< ? xml version = "1.0" encoding = "utf-8" ? > android:id = "@+id/actionBar" android:layout_width = "match_parent" android:layout_height = "match_parent" android:gravity = "center" android:paddingLeft = "5dp" android:paddingTop = "7dp" android:orientation = "horizontal" > < TextView android:id = "@+id/titleFragment1" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "Syntax" android:textSize = "20sp" android:textColor = "@color/selected" / > < TextView android:id = "@+id/titleFragment2" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:textSize = "20sp" android:text = "ionary" / > < / LinearLayout > |
Создать createCutomActionBarTitle () в вашей деятельности
Создайте этот метод и включите для setDisplayShowCustomEnable значение true и для setDisplayShowTitleEnable значение false. Затем накачайте созданный выше файл custom_action_bar.xml. Прочитайте ваш новый загруженный шрифт и установите его в textviews. По крайней мере, добавьте его в панель действий. Сделано с макетом.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
private void createCutomActionBarTitle(){ this .getActionBar().setDisplayShowCustomEnabled( true ); this .getActionBar().setDisplayShowTitleEnabled( false ); LayoutInflater inflator = LayoutInflater.from( this ); View v = inflator.inflate(R.layout.custom_action_bar, null ); Typeface tf = Typeface.createFromAsset(getAssets(), "font/yourfont.ttf" ); ((TextView)v.findViewById(R.id.titleFragment1)).setTypeface(tf); ((TextView)v.findViewById(R.id.titleFragment2)).setTypeface(tf); //assign the view to the actionbar this .getActionBar().setCustomView(v); } |
Добавление поведения и навигация назад
Недостаток настраиваемых ActionBars заключается в том, что вам нужно беспокоиться обо всем. Включая поведение по умолчанию, такое как возврат назад и включение действий для новых вставленных текстовых представлений. Мы сделаем это сейчас. Обычно вы переходите от действия к действию и после того, как что-то делаете, вы хотели бы дать пользователям возможность вернуться назад, коснувшись заголовка actionBars. Для этого улучшите метод createCustomActionBarTitle следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
private void createCutomActionBarTitle(){ this .getActionBar().setDisplayShowCustomEnabled( true ); this .getActionBar().setDisplayShowTitleEnabled( false ); LayoutInflater inflator = LayoutInflater.from( this ); View v = inflator.inflate(R.layout.action_bar_contribution, null ); Typeface tf = Typeface.createFromAsset(getAssets(), "font/fat_tats.ttf" ); TextView frag1 = (TextView)v.findViewById(R.id.titleFragment1); frag1.setTypeface(tf); TextView frag2 = (TextView)v.findViewById(R.id.titleFragment2); frag2.setTypeface(tf); frag1.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { startActivity( new Intent(YourCurrentActivity. this , YourTargetActivity. class )); finish(); } }); frag2.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { startActivity( new Intent(YourCurrentActivity. this , YourTargetActivity. class )); finish(); } }); //assign the view to the actionbar this .getActionBar().setCustomView(v); } |
Добавление метаданных в файл манифеста
Мы почти закончили. Чтобы иметь возможность вернуться назад, нам нужно написать запись в файле манифеста. YourTargetActivity — это действие, которое будет вызываться, когда мы нажимаем заголовок actionBars. В нашем случае это будет выглядеть так:
01
02
03
04
05
06
07
08
09
10
11
|
< activity android:label = "yourActivityLabelName" android:name = "your.package.YourActivity" android:parentactivityname = "your.package.YourTargetActivity" android:screenorientation = "landscape" android:windowsoftinputmode = "stateHidden" > < meta-data android:name = "android.support.PARENT_ACTIVITY" android:value = "your.package.YourTargetActivity" > < / meta-data > < / activity > |
Вот и все! надеюсь, вам понравится! Приложение для загрузки здесь:
Ссылка: | Как настроить / изменить шрифт ActionBar, текст, цвет, значок, макет и т. Д. С помощью Android от нашего партнера по JCG Рикардо Феррейра из блога Clean Code Development — Quality Seal . |