Untitled
unknown
plain_text
10 months ago
6.8 kB
6
Indexable
private void initNavigationView() {
mBottomNavigation = findViewById(R.id.main__bottom_navigation);
setupCustomTabs();
navGraphIds = Arrays.asList(
R.navigation.navigation_home,
R.navigation.navigation_navigation,
R.navigation.nav_maintenance,
R.navigation.navigation_profile);
mBottomNavigation.setupWithNavController(
navGraphIds,
getSupportFragmentManager(),
R.id.nav_host_fragment_activity_main,
getIntent(),viewModel, this);
// mBottomNavigation. setOnItemSelectedListener(item -> {
// if(item.getItemId() == R.id.navigation_profile){
// if(customTab != null){
// customTab.setBackgroundColor(getResources().getColor(R.color.profile_bg));
// ImageView tabIcon = customTab.findViewById(R.id.tab_icon);
// TextView tabTitle = customTab.findViewById(R.id.tab_title);
// tabTitle.setTextColor(getColor(R.color.white));
// tabTitle.setText("Cancel");
// tabIcon.animate().scaleX(1.5f).scaleY(1.5f).setDuration(300).start();
// tabIcon.setImageResource(R.drawable.cancel);
// }
//
// }
// return false;
// });
}
private void setupCustomTabs() {
@SuppressLint("RestrictedApi") BottomNavigationMenuView menuView = (BottomNavigationMenuView) mBottomNavigation.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
MenuItem menuItem = mBottomNavigation.getMenu().getItem(i);
// Inflate custom tab layout
View customTab = LayoutInflater.from(this).inflate(R.layout.home_bottom_tab, null);
// Optionally, set the default UI for each tab here
resetTabToDefault(customTab, menuItem);
// Set click listener on the custom view
customTab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("tg", "onClick:tb ");
handleTabClick(menuItem, customTab);
}
});
menuItem.setActionView(customTab);
}
}
private void handleTabClick(MenuItem clickedItem, View clickedView) {
// Reset all tabs first
for (int j = 0; j < mBottomNavigation.getMenu().size(); j++) {
MenuItem item = mBottomNavigation.getMenu().getItem(j);
View view = item.getActionView();
resetTabToDefault(view, item);
}
int id = clickedItem.getItemId();
// If the profile tab is clicked
if (id == R.id.navigation_profile) {
// If already selected, then revert and switch to home tab
if (mBottomNavigation.getSelectedItemId() == R.id.navigation_profile) {
resetTabToDefault(clickedView, clickedItem);
mBottomNavigation.setSelectedItemId(R.id.navigation_home);
} else {
updateProfileTabSelected(clickedView);
mBottomNavigation.setSelectedItemId(R.id.navigation_profile);
}
} else {
// For other tabs, update the UI (e.g., white background) on selection
updateTabSelected(clickedView);
mBottomNavigation.setSelectedItemId(id);
}
}
private void updateTabSelected(View view) {
// Set a white background to indicate selection
view.setBackgroundColor(getResources().getColor(R.color.white));
// Optionally update icon or text color if needed
ImageView icon = view.findViewById(R.id.tab_icon);
TextView title = view.findViewById(R.id.tab_title);
// For example, change tint or text color:
// title.setTextColor(getResources().getColor(R.color.white));
}
private void updateProfileTabSelected(View view) {
// For the profile tab, change icon, title, and background when selected
// view.setBackgroundResource(R.drawable.profile_selected_background);
view.setBackgroundColor(getResources().getColor(R.color.profile_bg));
ImageView icon = view.findViewById(R.id.tab_icon);
TextView title = view.findViewById(R.id.tab_title);
title.setTextColor(getResources().getColor(R.color.white));
title.setText("Cancel");
icon.animate().scaleX(1.5f).scaleY(1.5f).setDuration(300).start();
icon.setImageResource(R.drawable.cancel);
}
private void resetTabToDefault(View view, MenuItem menuItem) {
// Revert the UI to the default state based on the menu item's ID
switch (menuItem.getItemId()) {
case R.id.navigation_home:
view.setBackgroundColor(getResources().getColor(R.color.gray_light));
((ImageView)view.findViewById(R.id.tab_icon)).setImageResource(R.drawable.home2);
((TextView)view.findViewById(R.id.tab_title)).setText("Home");
((TextView)view.findViewById(R.id.tab_title)).setTextColor(getResources().getColor(R.color.black_light));
break;
case R.id.navigation_navigation:
view.setBackgroundColor(getResources().getColor(R.color.gray_light));
((ImageView)view.findViewById(R.id.tab_icon)).setImageResource(R.drawable.navigation_module2);
((TextView)view.findViewById(R.id.tab_title)).setText("Navigation");
((TextView)view.findViewById(R.id.tab_title)).setTextColor(getResources().getColor(R.color.black_light));
break;
case R.id.nav_maintenance:
view.setBackgroundColor(getResources().getColor(R.color.gray_light));
((ImageView)view.findViewById(R.id.tab_icon)).setImageResource(R.drawable.incident_module);
((TextView)view.findViewById(R.id.tab_title)).setText("Maintenance");
((TextView)view.findViewById(R.id.tab_title)).setTextColor(getResources().getColor(R.color.black_light));
break;
case R.id.navigation_profile:
view.setBackgroundColor(getResources().getColor(R.color.gray_light));
((ImageView)view.findViewById(R.id.tab_icon)).setImageResource(R.drawable.profile_icon);
((TextView)view.findViewById(R.id.tab_title)).setText("Profile");
((TextView)view.findViewById(R.id.tab_title)).setTextColor(getResources().getColor(R.color.black_light));
break;
}
}Editor is loading...
Leave a Comment