평범한 BottomNavigationView 에 질리셨다면, 이제는 조금 변경해볼까요?
지금부터 순서대로 따라하시면 위와 같은 결과를 얻을 수 있습니다! (6단계의 과정만 진행하시면 됩니다!)
1. Theme 수정하기
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.YoutubeLayout" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">#0F9D58</item>
<item name="colorPrimaryVariant">#0F9D58</item>
<item name="colorOnPrimary">#000000</item>
</style>
</resources>
2. Menifest 수정하기
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.YoutubeLayout">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
3. menu Item 추가하기
1. 사전에 Vector Icon 을 만들어주세요 ^_^
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/home"
android:icon="@drawable/ic_home"
android:title="Home"/>
<item
android:id="@+id/Search"
android:icon="@drawable/ic_search"
android:title="Search"/>
<item
android:id="@+id/placeholder"
android:title=""/>
<item
android:id="@+id/Profile"
android:icon="@drawable/ic_favorite"
android:title="Favorite"/>
<item
android:id="@+id/Settings"
android:icon="@drawable/ic_locker"
android:title="Locker"/>
</menu>
4. Custom BottomNavigationView 생성하기
이렇게 해주지 않으면, 공백에 해당하는 Item 에도 클릭이벤트가 발생하기 때문에, 간단하게 생성해주세요 :)
class YoutubeBottomNavigationView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : BottomNavigationView(context, attrs, defStyleAttr) {
init {
val menuView = getChildAt(0) as ViewGroup
//index 2 : 비활성화 아이템
menuView.getChildAt(2).isClickable = false
}
}
5. MainActivity.xml 수정하기
app:elevation="0dp" 가 왜 필요하죠?
* android:elevation="0dp" 가 아니라, app:elevation="0dp" 라는 점을 주의하세요!
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<com.devhyeon.youtubelayout.YoutubeBottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="16dp"
app:elevation="0dp"
app:labelVisibilityMode="labeled"
android:background="@android:color/transparent"
app:menu="@menu/bottom_nav_menu" />
</com.google.android.material.bottomappbar.BottomAppBar>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_add"
app:layout_anchor="@id/bottomAppBar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
6. 결과 확인하기
다양하게 NavagationView 를 사용해보면 좋을 것 같아요! :)
'BackUp (관리중지) > Android 실습' 카테고리의 다른 글
BottomDrawer Lib을 사용하여 5분만에 Custom UI 구현하기 (BottomSheet) (0) | 2021.04.25 |
---|---|
Fragment LifeCycle 실습 with Activity (0) | 2021.04.23 |
안드로이드 라이브러리 배포 (GitHub, Jitpack.io) (0) | 2021.04.17 |