Podczas tworzenie bardziej zaawansowanych aplikacji potrzebujemy dodatkowych przycisków akcji. Takie przyciski oczywiście możemy dodać do toolbar’a, ale tam wszystkiego nie zmieścimy. Na szczęście twórcy androida przewidzieli takie sytuacje i stworzyli dodatkowy widok o którym dziś będziemy rozmawiać. Taki dodatkowy dolny pasek przycisków możemy stworzyć za pomocą bottomNavigationView. Poniżej znajduje się przykład o jaki dodatkowy pasek chodzi:
1. Stworzenie layoutu:
Na początku stworzymy plik z wyglądem naszej aktywności która będzie posiadać taki pasek. Plik activity_main.xml ma następującą postać:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="#303030">
<!-- Content Container -->
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:id="@+id/toolbar"
android:background="@color/colorPrimary"/>
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/bottonNav"
app:elevation="16dp"
app:itemIconTint="@drawable/nav_item_color_state"
app:itemTextColor="@drawable/nav_item_color_state"
app:menu="@menu/my_navigation_items" />
</RelativeLayout>Dodatkowo w tym wyglądzie zastosowalność „efekt fali / rozchodzących się fali” (Ripple Effect) – aby przy naciskaniu był ładny efekt, Uwaga! Ten efekt działa tylko od Androida 5.0 (API 21).
2. Selektory
Selektory posłużą nam do tego aby wyświetlały się odpowiednie kolory przycisków w zależności od wciśniętego przycisku.
Plik nav_item_color_state.xml wygląda następująco:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorPrimaryRipple" android:state_checked="true" />
<item android:color="@android:color/darker_gray" android:state_checked="false" />
</selector>Kolor fali możemy ustawić w pliku ze stylami dodając:
<item name="colorControlHighlight">@color/colorPrimaryRipple</item>
3. Menu przycisków
Aby dodać ikonki do paska towrzymy plik my_navigation_items.xml w folderze menu o następującej treści:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:title="@string/menu_search"
android:icon="@android:drawable/ic_menu_search" />
<item android:id="@+id/action_settings"
android:title="@string/menu_preferences"
android:icon="@android:drawable/ic_menu_preferences" />
<item android:id="@+id/action_help"
android:title="@string/menu_help"
android:icon="@android:drawable/ic_menu_help" />
</menu>4. Tekst
W pliku ze stringami mamy coś takiego:
<resources>
<string name="app_name">Bottom Navigation View</string>
<string name="title_activity_main2">Main2Activity</string>
<string name="menu_search">Search</string>
<string name="menu_preferences">Preferences</string>
<string name="menu_help">Help</string>
</resources>5. Kod aktywności:
package net.myenv.secendtoolbar;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
case R.id.action_settings:
case R.id.action_help:
}
return true;
}
});
}
}Oczywiście tutaj już sami musimy zaimplementować co dany przycisk robi w metodzie switch 🙂
Taki szybki wpis i ładny efekt 🙂

