Tutorial Membuat Android Bottom Navigation View dengan Fragment

Halo teman-teman inwepo! Kali ini kita akan belajar membuat Android Bottom Navigation pada Android. Bottom Navigation ini merupakan salah satu cara dalam bernavigasi ke beberapa halaman di aplikasi Android dan cocok untuk 3-5 halaman saja.

Jika terdapat lebih dari 5 halaman di destinasi utama, maka sangat direkomendasikan menggunakan Android Navigation Drawer. Kalian juga dapat menggunakan Android Tab untuk 1 atau 2 level destinasi utama. Untuk mengikuti panduan dalam membuat Bottom Navigation View, disarankan kalian untuk membaca Google User Guide for Bottom Navigation View terlebih dahulu.

Persiapan:

Yang dibutuhkan adalah Android Studio, Android SDK versi terbaru (versi 25) dan tools (termasuk SDK tools, build-tools, platform-tools, support repository).

Langkah 1: Membuat projek baru

a. Buka Android Studio buat projek baru, klik File – New Project.  Masukan data sebagai berikut

Project name: AndroidBottomNavigationView,

Package: com.aureliafriska.androidbottomnavigationview (boleh diganti sesuai namamu) lalu klik Next.

b. Pastikan Phone and Tablet tercentang dan pilih Minimum SDK: Android 4.0 (IceCream Sandwich) lalu klik Next.

c. Pilih Empty Activity dan masukkan Activity Name: MainActivity, lainnya biarkan default.

Sekarang kita telah membuat Android project, jika kalian tidak menggunakan targetSdkVersion 25, kalian dapat meng-update-nya di SDK Manager.

Langkah 2: Menambahkan design support library

Buka file build.gradle pada Gradle Script dan masukkan
compile ‘com.android.support:design:25.3.1’ pada scope dependencies sehingga terlihat seperti kode di bawah:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.aureliafriska.androidbottomnavigationview"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:support-v4:25.3.1'
    testCompile 'junit:junit:4.12'
}

Langkah 3: Menambah String dan Color

a. Buka file strings.xml di dalam folder res dan tambah code berikut ini:

<resources>
<string name="app_name">AndroidBottomNavigationView</string>
<string name="buku">Buku</string>
<string name="musik">Musik</string>
<string name="film">Film</string>
<string name="fragment_buku">Fragment Buku</string>
<string name="fragment_film">Fragment Film</string>
<string name="fragment_musik">Fragment Musik</string>
</resources>

b. Buka file colors.xml di dalam folder res dan tambah code berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#9C27B0</color>
<color name="colorAccent">#68EFAD</color>
<color name="colorCheck">#ffffff</color>
<color name="colorUncheck">#B2D7D2</color>
</resources>

c. Buat file selector baru dengan mengklik kanan folder drawable dalam folder res lalu pilih New  – Drawable resource files. Beri nama nav_item_color_state.xml dan tambah code berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/colorCheck" />
<item android:color="@color/colorUncheck" />
</selector>

Langkah 4: Mengunduh resource dan membuat item menu

a. Sekarang kita membutuhkan resource berupa icon yang dapat dengan mudah kita download dari Google Material Icon. Icon yang saya pakai yaitu library books, library movie, dan libary music.

Setelah mengunduh, buka zip dan masuk ke dalam folder Android. Copy semua folder di dalamnya dan paste ke dalam folder res. Jika dialog terbuka pilih saja “Yes”.

b. Selanjutnya membuat menu resource folder (jika belum ada) dengan mengklik kanan folder res  – Android resource directory.

Masukkan Directory name: menu, Resource type: menu. Jika folder sudah terbuat, buat file menu baru dengan mengklik kanan folder menu lalu pilih New – Menu resouce file. Beri nama bottom_navigation_items.xml dan tambah code berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_buku"
        android:icon="@drawable/ic_library_books_white_24dp"
        android:title="@string/buku"/>
    <item
        android:id="@+id/menu_musik"
        android:icon="@drawable/ic_library_music_white_24dp"
        android:title="@string/musik"/>
    <item
        android:id="@+id/menu_film"
        android:icon="@drawable/ic_video_library_white_24dp"
        android:title="@string/film"/>
</menu>

Langkah 5: Membuat 3 Fragment

a. Klik kanan pada direktori utama java kita dan pilih New – Fragment – Fragment (Blank). Beri Fragment name: FragmentBuku, Fragment layout: fragment_buku, include fragment factory methods dan interface callback tidak tercentang. Lakukanlah ini sebanyak 2 kali untuk FragmentMusik dan FragmentFilm.

b. Buka fragment_buku.xml dan tambah code berikut:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context="com.aureliafriska.androidbottomnavigationview.FragmentBuku">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/fragment_buku"
        android:textStyle="bold"
        android:layout_gravity="center"/>

</FrameLayout>

c. Buka fragment_musik.xml dan tambah code berikut:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context="com.aureliafriska.androidbottomnavigationview.FragmentMusik">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/fragment_musik"
        android:textStyle="bold"
        android:layout_gravity="center"/>

</FrameLayout>

d. Buka fragment_film.xml dan tambah code berikut:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context="com.aureliafriska.androidbottomnavigationview.FragmentFilm">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/fragment_film"
        android:textStyle="bold"
        android:layout_gravity="center"/>

</FrameLayout>

Langkah 6: Mengubah MainActivity

a. Buka activity_main.xml pada folder res – layout dan tambah code berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.aureliafriska.androidbottomnavigationview.MainActivity">

    <FrameLayout
        android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom_navigation"
        android:animateLayoutChanges="true">

    </FrameLayout>

    <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/colorPrimary"
        app:itemIconTint="@drawable/nav_item_color_state"
        app:itemTextColor="@drawable/nav_item_color_state"/>

</RelativeLayout>

b. Buka MainActivity.java dan tambah code berikut ini:

package com.aureliafriska.androidbottomnavigationview;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = MainActivity.class.getSimpleName();
    private BottomNavigationView bottomNavigation;
    private Fragment fragment;
    private FragmentManager fragmentManager;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        bottomNavigation = (BottomNavigationView) findViewById(R.id.bottom_navigation);
        bottomNavigation.inflateMenu(R.menu.bottom_navigation_items);
        fragmentManager = getSupportFragmentManager();
        
        //Untuk inisialisasi fragment pertama kali
        fragmentManager.beginTransaction().replace(R.id.main_container, new FragmentBuku()).commit();
        
        //Memberikan listener saat menu item di bottom navigation diklik
        bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                int id = item.getItemId();
                switch (id){
                    case R.id.menu_buku:
                        fragment = new FragmentBuku();
                        break;
                    case R.id.menu_musik:
                        fragment = new FragmentMusik();
                        break;
                    case R.id.menu_film:
                        fragment = new FragmentFilm();
                        break;
                }
                final FragmentTransaction transaction = fragmentManager.beginTransaction();
                transaction.replace(R.id.main_container, fragment).commit();
                return true;
            }
        });
    }
}

Langkah 7: Menjalankan aplikasi

Buka emulator di AVD Manager dan jalankan aplikasinya. Hasilnya akan seperti ini:

Code Github dapat kalian lihat di sini: Android Bottom Navigation View

Tutorial Bottom Navigation sudah selesai. Sampai bertemu di tutorial selanjutnya! 🙂

3 Comments

3 Comments

  1. Wawa

    Februari 1, 2018 at 11:00

    Thx Kak.. Membantu seklai…

  2. Bagus

    September 18, 2018 at 15:16

    Makasih Kak Membantu saya dalam pembuatan Project Android Studio <3

  3. Bulung Wijaya S S

    Mei 8, 2021 at 13:38

    Halo kak, mau tanya supaya edittext menampilkan data dari database menggunakan sessionmanager di dalam fragment gimana caranya ya??

Leave a Reply

Your email address will not be published. Required fields are marked *

Leave the field below empty!

Trending Minggu Ini

Inwepo adalah media platform yang membantu setiap orang untuk belajar dan berbagi tutorial, tips dan trik cara penyelesaian suatu masalah di kehidupan sehari-hari dalam bentuk teks, gambar. dan video.

Dengan bergabung bersama kami dan membuat 1 tutorial terbaik yang kamu miliki dapat membantu jutaan orang di Indonesia untuk mendapatkan solusinya. Ayo berbagi tutorial terbaikmu.

Ikuti Kami di Sosmed

Inwepo Navigasi

Tentang Kami             Beranda

Hubungi Kami             Panduan Penulis

Kebijakan Privasi

FAQ

Partner

Copyright © 2014 - 2024 Inwepo - All Rights Reserved.

To Top