Возможно ли иметь другой цвет элемента, чтобы различать элементы в нижнем навигационном представлении?

Я пытаюсь создать bottomNavigationView для своего приложения. В итоге я создал BMV, который может выделять пункты меню (используя селекторы) при выборе, как показано на изображениях ниже.

введите здесь описание изображения

введите здесь описание изображения

Однако мне нужно что-то вроде разных цветов для разных пунктов меню при выборе

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

Можно ли создать что-то подобное с помощью bottomnavigationview?


person Ravi teja Talari    schedule 01.02.2018    source источник
comment
попробуйте это и stackoverflow.com/a/40326245/8089770   -  person Vidhi Dave    schedule 01.02.2018
comment
@VishvaDave эта ссылка действительно мне не помогла   -  person Ravi teja Talari    schedule 01.02.2018
comment
Это не дубликат, другой связанный вопрос о переполнении стека отвечает на что-то уже сделанное. В итоге я создал BMV, который может выделять элементы меню (используя селекторы). Он хочет иметь разные цвета для разных пунктов меню при выборе.   -  person Quentin G.    schedule 13.03.2018
comment
Взгляните на это, он делает то, что вы хотите + другие вещи gist.github.com/QuentinGuillout/   -  person Quentin G.    schedule 13.03.2018


Ответы (1)


Вы можете использовать эту стороннюю библиотеку, я использовал ее раньше. Это просто, эффективно и предоставляет множество настроек.

https://github.com/aurelhubert/ahbottomnavigation

Грейдл

dependencies {
    compile 'com.aurelhubert:ahbottomnavigation:2.1.0'
}

XML

<com.aurelhubert.ahbottomnavigation.AHBottomNavigation
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

Активность/Фрагмент

AHBottomNavigation bottomNavigation = (AHBottomNavigation) findViewById(R.id.bottom_navigation);

// Create items
AHBottomNavigationItem item1 = new AHBottomNavigationItem(R.string.tab_1, R.drawable.ic_maps_place, R.color.color_tab_1);
AHBottomNavigationItem item2 = new AHBottomNavigationItem(R.string.tab_2, R.drawable.ic_maps_local_bar, R.color.color_tab_2);
AHBottomNavigationItem item3 = new AHBottomNavigationItem(R.string.tab_3, R.drawable.ic_maps_local_restaurant, R.color.color_tab_3);

// Add items
bottomNavigation.addItem(item1);
bottomNavigation.addItem(item2);
bottomNavigation.addItem(item3);

// Set background color
bottomNavigation.setDefaultBackgroundColor(Color.parseColor("#FEFEFE"));

// Disable the translation inside the CoordinatorLayout
bottomNavigation.setBehaviorTranslationEnabled(false);

// Enable the translation of the FloatingActionButton
bottomNavigation.manageFloatingActionButtonBehavior(floatingActionButton);

// Change colors
bottomNavigation.setAccentColor(Color.parseColor("#F63D2B"));
bottomNavigation.setInactiveColor(Color.parseColor("#747474"));

// Force to tint the drawable (useful for font with icon for example)
bottomNavigation.setForceTint(true);

// Display color under navigation bar (API 21+)
// Don't forget these lines in your style-v21
// <item name="android:windowTranslucentNavigation">true</item>
// <item name="android:fitsSystemWindows">true</item>
bottomNavigation.setTranslucentNavigationEnabled(true);

// Manage titles
bottomNavigation.setTitleState(AHBottomNavigation.TitleState.SHOW_WHEN_ACTIVE);
bottomNavigation.setTitleState(AHBottomNavigation.TitleState.ALWAYS_SHOW);
bottomNavigation.setTitleState(AHBottomNavigation.TitleState.ALWAYS_HIDE);

// Use colored navigation with circle reveal effect
bottomNavigation.setColored(true);

// Set current item programmatically
bottomNavigation.setCurrentItem(1);

// Customize notification (title, background, typeface)
bottomNavigation.setNotificationBackgroundColor(Color.parseColor("#F63D2B"));

// Add or remove notification for each item
bottomNavigation.setNotification("1", 3);
// OR
AHNotification notification = new AHNotification.Builder()
    .setText("1")
    .setBackgroundColor(ContextCompat.getColor(DemoActivity.this, R.color.color_notification_back))
    .setTextColor(ContextCompat.getColor(DemoActivity.this, R.color.color_notification_text))
     .build();
bottomNavigation.setNotification(notification, 1);

// Enable / disable item & set disable color
bottomNavigation.enableItemAtPosition(2);
bottomNavigation.disableItemAtPosition(2);
bottomNavigation.setItemDisableColor(Color.parseColor("#3A000000"));

// Set listeners
bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() {
    @Override
    public boolean onTabSelected(int position, boolean wasSelected) {
        // Do something cool here...
        return true;
    }
});
bottomNavigation.setOnNavigationPositionListener(new AHBottomNavigation.OnNavigationPositionListener() {
    @Override public void onPositionChange(int y) {
        // Manage the new y position
    }
});

Для получения дополнительной информации проверьте ссылку выше, которую я предоставил. Надеюсь это поможет

person Rahul Chandrabhan    schedule 01.02.2018
comment
Возможно ли это без использования какой-либо сторонней библиотеки? - person Ravi teja Talari; 01.02.2018
comment
Просто измените значок выбранного элемента при нажатии и сбросьте значок других на невыбранный - person Rahul Chandrabhan; 01.02.2018