Статьи

Как настроить / изменить шрифт ActionBar, текст, цвет, значок, макет и т. Д. С Android

Всем привет!

Сегодня я поделюсь с вами очень общей задачей. Как настроить ActionBar на Android. Мы изменим макет, шрифт, размер текста, цвет текста, добавим к нему прослушиватель, вернемся назад, скроем заголовок и домашний значок.

В конце у нас будет что-то вроде этого:

03

Что ж, давайте начнем с изменения некоторых настроек API.

Загрузка шрифта

Прежде всего, перейдите к 1001freefonts и загрузите шрифт, который вы хотите применить к своему тексту. Это свободно!

После загрузки создайте папку с именем font в папке assets в корне вашего проекта. (создайте его, если он еще не существует) Это выглядит так: имя проекта> assets> font> yourfont.fft

01

Создание пользовательских цветов

Мы хотим изменить цвет нашего шрифта также. Поэтому по этой причине создайте два цвета в вашем файле 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"? >
 < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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>

Вот и все! надеюсь, вам понравится! Приложение для загрузки здесь:

03 (1)