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


