관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] 안드로이드 BottomNavigationView icon 설정 해결 본문

안드로이드/코틀린 & 아키텍처 & Recent

[안드로이드] 안드로이드 BottomNavigationView icon 설정 해결

막무가내막내 2020. 6. 26. 00:27
728x90

 

[2021-04-13 업데이트]

 

Jetpack 의 바텀 네비게이션 뷰를 쓰면서 내가 눌렀을 때와 안눌렀을 떄 selector로 설정한 대로 아이콘이 안나왔었습니다. (바텀 네비게이션에서 기본으로된 색상 설정등 이 우선시 되었기 때문입니다.)

 

[menu]

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/bottom_nav_1"
        android:icon="@drawable/ic_nav1_selector"
        android:title="@string/bottom_navi_test1" />

    <item
        android:id="@+id/bottom_nav_2"
        android:icon="@drawable/ic_nav2_selector"
        android:title="@string/bottom_navi_text2" />

    <item
        android:id="@+id/bottom_nav_3"
        android:icon="@drawable/ic_nav3_selector"
        android:title="@string/bottom_navi_text3" />

    <item
        android:id="@+id/bottom_nav_4"
        android:icon="@drawable/ic_nav4_selector"
        android:title="@string/bottom_navi_text4" />
</menu>

 

[selector]

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/nav_home_off" android:state_checked="false" />
    <item android:drawable="@drawable/nav_home_on" android:state_checked="true" />
</selector>

 

[bottom navi view]

app:labelVisibilityMode="unlabeled" (bottom naviagation view 에서 title로 지정한 텍스트가 안보이게함(전 뷰에 글자가 달려있었기 때문에 이것을 활성화 시켰습니다.)

뷰에 글자가 있음
원래면 title이 icon과 함께 밑에뜬다. 이를 lablaVisibilityMode 속성으로 안보이게함

<com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/main_bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="54dp"
            android:background="@color/colorWhite"
            android:paddingStart="30dp"
            android:paddingLeft="30dp"
            android:paddingEnd="42dp"
            android:paddingRight="42dp"
            app:itemIconSize="48dp"
            app:labelVisibilityMode="unlabeled"
            app:layout_behavior="tech.thdev.app.view.BottomNavigationBehavior"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/main_fl_container"
            app:menu="@menu/bottom_menu" />

 

 


결론 부터 말하면

binding.mainBottomNavigation.itemIconTintList = null 를 해주면 된다.

private fun initNavigation() {
        val navController = findNavController(R.id.main_nav_host)
        binding.mainBottomNavigation.setupWithNavController(navController)
        binding.mainBottomNavigation.itemIconTintList = null
    }

 

그럼 제가 설정한 대로 아이콘 대로 잘 동작하게 됩니다. (홈 누른 경우 아이콘 바뀜)

 

[결과]

 

 

 

 

 

 


 

[2020-12-11 댓글 답변]

<?xml version="1.0" encoding="utf-8"?>
<layout 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">

    <data>

    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".views.MainActivity">

        <androidx.fragment.app.FragmentContainerView
            android:id="@+id/main_fcv_container"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintBottom_toTopOf="@id/main_bottom_navigation"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintEnd_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <fragment
                android:id="@+id/main_nav_host"
                android:name="androidx.navigation.fragment.NavHostFragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:defaultNavHost="true"
                app:navGraph="@navigation/nav_graph" />
        </androidx.fragment.app.FragmentContainerView>


        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/main_bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="54dp"
            android:background="@color/colorWhiteFDFD"
            android:paddingStart="18dp"
            android:paddingLeft="18dp"
            android:paddingEnd="18dp"
            android:paddingRight="18dp"
            app:itemIconSize="48dp"
            app:labelVisibilityMode="unlabeled"
            app:layout_behavior="tech.thdev.app.view.BottomNavigationBehavior"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/main_fcv_container"
            app:menu="@menu/bottom_menu" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!

 

 

 

728x90
Comments