Всем привет!
Сегодня я поделюсь с вами очень общей задачей. Как настроить 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 . |


