[Học Android] Hướng dẫn thêm Bottom Navigation vào ứng dụng Android

[Học Android] Hướng dẫn thêm Bottom Navigation vào ứng dụng Android

Bottom Navigation là một thanh menu ở cuối màn hình cung cấp điều hướng giữa các chế độ views ở top-level trong ứng dụng. Bài viết này sẽ hướng dẫn bạn cách sử dụng Bottom Navigation và kết hợp nó với Fragment.

Thêm thư viện thiết kế

Thêm dòng phía dưới vào file build.gradle (Module: app):

implementation 'com.android.support:design:28.0.0'

    Tạo menu cho Bottom Navigation

    navigation.xml

    Thêm các giá trị color, string

    color.xml

    #7b4bff#6539ba#FF4081#fe485a

    string.xml

    Bottom NavigationShopGiftsCartProfile

    Thiết kế giao diện

    activitymain.xml

    Giao diện gồm 2 phần:

    • FrameLayout để chứa các Fragment
    • BottomNavigationView: Chính là Bottom Navigation, cần sử dụng các thuộc tính để đặt nó xuống phía dưới cùng của màn hình, như ở đây chúng ta sử dụng android:layout_gravity=”bottom”

    Chú ý các thuộc tính của BottomNavigationView:

    • app:menu —  File menu resource để hiển thị các mục điều hướng cùng với icon và text.
    • app:itemBackground —  Áp dụng background color cho Bottom Navigation.
    • app:itemTextColor —  Màu text của Bottom Navigation item.
    • app:itemIconTint — Màu icon của Bottom Navigation item.

    Xử lý các sự kiện

    MainActivity.java

    package info.androidhive.bottomnavigation;
     
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.design.widget.BottomNavigationView;
    import android.support.design.widget.CoordinatorLayout;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentTransaction;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.AppCompatActivity;
    import android.view.MenuItem;
     
    import info.androidhive.bottomnavigation.fragment.CartFragment;
    import info.androidhive.bottomnavigation.fragment.GiftsFragment;
    import info.androidhive.bottomnavigation.fragment.ProfileFragment;
    import info.androidhive.bottomnavigation.fragment.StoreFragment;
    import info.androidhive.bottomnavigation.helper.BottomNavigationBehavior;
     
    public class MainActivity extends AppCompatActivity {
     
        private ActionBar toolbar;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            toolbar = getSupportActionBar();
     
            BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
            navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
     
            toolbar.setTitle("Shop");
        }
     
        private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
                = new BottomNavigationView.OnNavigationItemSelectedListener() {
     
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment fragment;
                switch (item.getItemId()) {
                    case R.id.navigation_shop:
                        toolbar.setTitle("Shop");
                        return true;
                    case R.id.navigation_gifts:
                        toolbar.setTitle("My Gifts");
                        return true;
                    case R.id.navigation_cart:
                        toolbar.setTitle("Cart");
                        return true;
                    case R.id.navigation_profile:
                        toolbar.setTitle("Profile");
                        return true;
                }
                return false;
            }
        };
    }

    Kết quả:

    Thêm các Fragment

    Tạo các Fragment

    Chúng ta tạo ra bốn fragment có tên là StoreFragment, GiftsFragment, CartFragment ProfileFragment.

    Tạo fragment mới: File New Fragment Fragment (Blank) với tên là StoreFragment.java, tương tự với các fragment còn lại

    Load các Fragment khi chọn item ở BottomNavigation

    MainActivity.java

    package info.androidhive.bottomnavigation;
     
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.design.widget.BottomNavigationView;
    import android.support.design.widget.CoordinatorLayout;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentTransaction;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.AppCompatActivity;
    import android.view.MenuItem;
     
    import info.androidhive.bottomnavigation.fragment.CartFragment;
    import info.androidhive.bottomnavigation.fragment.GiftsFragment;
    import info.androidhive.bottomnavigation.fragment.ProfileFragment;
    import info.androidhive.bottomnavigation.fragment.StoreFragment;
    import info.androidhive.bottomnavigation.helper.BottomNavigationBehavior;
     
    public class MainActivity extends AppCompatActivity {
     
        private ActionBar toolbar;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            toolbar = getSupportActionBar();
     
            // Đặt Fragment mặc định
            toolbar.setTitle("Shop");
            loadFragment(new StoreFragment());
        }
     
        private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
                = new BottomNavigationView.OnNavigationItemSelectedListener() {
     
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment fragment;
                switch (item.getItemId()) {
                    case R.id.navigation_shop:
                        toolbar.setTitle("Shop");
                        fragment = new StoreFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_gifts:
                        toolbar.setTitle("My Gifts");
                        fragment = new GiftsFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_cart:
                        toolbar.setTitle("Cart");
                        fragment = new CartFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_profile:
                        toolbar.setTitle("Profile");
                        fragment = new ProfileFragment();
                        loadFragment(fragment);
                        return true;
                }
     
                return false;
            }
        };
     
        private void loadFragment(Fragment fragment) {
            // load Fragment
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.frame_container, fragment);
            transaction.addToBackStack(null);
            transaction.commit();
        }
     
    }

    Kết quả:

    Cảm ơn các bạn đã đọc bài viết.

    Chào thân ái và quyết thắng!

    admin

    Leave a Reply

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