Simple&Natural
BottomNavigationView Menu Item 커스터마이징 본문
728x90
최근 유튜브도 이런 식으로 BottomNavigation 메뉴를 커스텀해서 쓰는 것을 발견.
궁금해서 내 앱에도 적용해보기로 했다.
bottom_menu_item3.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/center_menu_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_baseline_track_changes_24" />
</FrameLayout>
MainActivity
새로운 listener를 적용하고 나면 기존의 리스너는 동작하지 않으므로 navigate 동작을 다시 설정해주어야 한다.
return값을 false로 하면 해당 메뉴 아이템에 selectable이 동작하지 않는다.
...
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
val bottomNav = binding.bottomNav
//Init bottomNavigationView
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
navController = navHostFragment.navController
appBarConfiguration = AppBarConfiguration(bottomNav.menu)
bottomNav
.setupWithNavController(navController)
//Customize BottomMenuItem(3rd)
val menuView = bottomNav.getChildAt(0) as BottomNavigationMenuView
val menuItemView3 = menuView.getChildAt(2) as BottomNavigationItemView
val newMenuView = LayoutInflater.from(this).inflate(R.layout.bottom_menu_item3, bottomNav, false)
menuItemView3.addView(newMenuView)
bottomNav.setOnNavigationItemSelectedListener {
if (it.itemId == R.id.main3) {
println("main3~~");
false
}
else NavigationUI.onNavDestinationSelected(it, navController)
}
...
728x90
'안드로이드(Android) > 기타' 카테고리의 다른 글
[Android] ItemDecoration의 onDraw와 onDrawOver의 차이 (0) | 2020.11.22 |
---|---|
DecimalFormat 활용하기 (0) | 2020.11.13 |
[Android] Retrofit으로 파라미터 선택적으로 보내기 (0) | 2020.10.14 |
[Android] Navigation Component 사용시 각 Fragment Toolbar의 뒤로가기 버튼 없애기 (0) | 2020.10.10 |
[Android] BottomNavigationView Text Size 변경 방법 (2) | 2020.10.10 |