123e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas/* 223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * Copyright (C) 2016 The Android Open Source Project 323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * 423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License"); 523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * you may not use this file except in compliance with the License. 623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * You may obtain a copy of the License at 723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * 823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * http://www.apache.org/licenses/LICENSE-2.0 923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * 1023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software 1123e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS, 1223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * See the License for the specific language governing permissions and 1423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * limitations under the License. 1523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas */ 1623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas 1723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikaspackage com.example.android.support.design.widget; 1823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas 19910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikasimport android.content.res.ColorStateList; 2023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.os.Bundle; 21111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikasimport android.support.annotation.NonNull; 2223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.support.design.widget.BottomNavigationView; 2323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.support.v7.app.AppCompatActivity; 2423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.view.MenuItem; 2523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.view.View; 2623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikasimport android.widget.Button; 27111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikasimport android.widget.TextView; 2823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas 29910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikasimport com.example.android.support.design.R; 30910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas 3123e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas/** 3223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas * This demonstrates idiomatic usage of the bottom navigation widget. 3323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas */ 3423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikaspublic class BottomNavigationViewUsage extends AppCompatActivity { 35910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas private ColorStateList mOriginalTint; 36910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas 3723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas @Override 3823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas protected void onCreate(Bundle savedInstanceState) { 3923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas super.onCreate(savedInstanceState); 4023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas setContentView(R.layout.design_bottom_navigation_view); 41fa2e2acf79d791a90410025daad438968550d18cAlan Viverette Button buttonDisable = findViewById(R.id.button_disable); 4223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas final BottomNavigationView bottom = 43fa2e2acf79d791a90410025daad438968550d18cAlan Viverette findViewById(R.id.bottom_navigation); 44910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas mOriginalTint = bottom.getItemIconTintList(); 4523e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas buttonDisable.setOnClickListener(new View.OnClickListener() { 4623e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas @Override 4723e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas public void onClick(View view) { 4823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas bottom.getMenu().getItem(0).setEnabled(!bottom.getMenu().getItem(0).isEnabled()); 4923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas } 5023e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas }); 51fa2e2acf79d791a90410025daad438968550d18cAlan Viverette Button buttonAdd = findViewById(R.id.button_add); 5223e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas buttonAdd.setOnClickListener(new View.OnClickListener() { 5323e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas @Override 5423e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas public void onClick(View view) { 55e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren if (bottom.getMenu().size() < bottom.getMaxItemCount()) { 563cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas MenuItem item = bottom.getMenu().add("Bananas"); 573cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas item.setIcon(android.R.drawable.ic_lock_power_off); 583cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas } 593cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas } 603cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas }); 61fa2e2acf79d791a90410025daad438968550d18cAlan Viverette Button buttonRemove = findViewById(R.id.button_remove); 623cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas buttonRemove.setOnClickListener(new View.OnClickListener() { 633cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas @Override 643cc432a5bd723a79dc52438235b47d0ea5d41ae4Aurimas Liutikas public void onClick(View view) { 65e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren if (bottom.getMenu().size() > 0) { 66e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren bottom.getMenu().removeItem(bottom.getMenu().getItem(0).getItemId()); 67e4c7e61dbe94a77c5389eb20952d6b7ed6536cafJonathan Koren } 6823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas } 6923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas }); 70fa2e2acf79d791a90410025daad438968550d18cAlan Viverette Button buttonTint = findViewById(R.id.button_tint); 71910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas buttonTint.setOnClickListener(new View.OnClickListener() { 72910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas @Override 73910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas public void onClick(View view) { 74910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas if (bottom.getItemIconTintList() == null) { 75910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas bottom.setItemIconTintList(mOriginalTint); 76910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas } else { 77910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas bottom.setItemIconTintList(null); 78910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas } 79910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas } 80910de28f0a195668fad38ad2367c1f7237a7af98Aurimas Liutikas }); 81fa2e2acf79d791a90410025daad438968550d18cAlan Viverette Button buttonNext = findViewById(R.id.button_select_next); 8269557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas buttonNext.setOnClickListener(new View.OnClickListener() { 8369557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas @Override 8469557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas public void onClick(View view) { 8569557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas final int menuSize = bottom.getMenu().size(); 866b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren if (menuSize < 1) { 876b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren return; 886b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren } 8969557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas int currentlySelected = 0; 9069557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas for (int i = 0; i < menuSize; i++) { 9169557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas if (bottom.getMenu().getItem(i).isChecked()) { 9269557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas currentlySelected = i; 936b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren break; 9469557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas } 9569557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas } 966b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren int next = (currentlySelected + 1) % menuSize; 976b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren bottom.setSelectedItemId(bottom.getMenu().getItem(next).getItemId()); 9869557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas } 9969557a3a037e4124ecbc98560e84fa89472b3bf4Aurimas Liutikas }); 100fa2e2acf79d791a90410025daad438968550d18cAlan Viverette final TextView selectedItem = findViewById(R.id.selected_item); 101111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas bottom.setOnNavigationItemSelectedListener( 102111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas new BottomNavigationView.OnNavigationItemSelectedListener() { 103111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas @Override 104111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas public boolean onNavigationItemSelected(@NonNull MenuItem item) { 105111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas switch (item.getItemId()) { 106111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas case R.id.action_search: 107111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas selectedItem.setText("Entering searching mode"); 108111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas break; 109111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas case R.id.action_settings: 110111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas selectedItem.setText("Entering settings!?!"); 111111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas break; 112111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas case R.id.action_music: 113111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas selectedItem.setText("Play some music"); 114111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas break; 115111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas default: 116111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas selectedItem.setText("Selected " + item.getTitle()); 117111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas } 118578015fc3e5ddc0fdb95db7ad0d00822c54be6dfAurimas Liutikas return true; 119111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas } 120111ab9977e17f525a1c6435de9203f096f8635afAurimas Liutikas }); 1216b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren bottom.setOnNavigationItemReselectedListener( 1226b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren new BottomNavigationView.OnNavigationItemReselectedListener() { 1236b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren @Override 1246b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren public void onNavigationItemReselected(@NonNull MenuItem item) { 1256b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren selectedItem.setText("Reselected " + item.getTitle()); 1266b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren } 1276b3a399a8ed6afa4c9da88690a61efca61b61d21Jonathan Koren }); 12823e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas } 12923e274886774bf1a6c433ed98503e148fa1e15b4Aurimas Liutikas} 130