Kotlin, FireBase 채팅어플 만들기 -1- [Splash] (tistory.com)
Kotlin, FireBase 채팅어플 만들기 -2- [Login] (tistory.com)
Kotlin, FireBase 채팅어플 만들기 -3- [Sign Up] (tistory.com)
Kotlin, FireBase 채팅어플 만들기 -4- [Bottom Navigation] (tistory.com)
Kotlin, FireBase 채팅어플 만들기 -5- [친구창_fragment] (tistory.com)
Kotlin, FireBase 채팅어플 만들기 -6- [채팅 리스트_fragment] (tistory.com)
Kotlin, FireBase 채팅어플 만들기 -7- [프로필 변경_fragment] (tistory.com)
Kotlin, FireBase 채팅어플 만들기 -8- [채팅창_activity] (tistory.com)
[전체 코드 깃허브 주소]
LasBe-code/LasbeTalk (github.com)
[참고]
[XML]
<bottom_menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_home"
android:title="홈"
android:icon="@drawable/ic_baseline_home_24"
/>
<item
android:id="@+id/menu_chat"
android:title="채팅"
android:icon="@drawable/ic_baseline_chat_24"
/>
<item
android:id="@+id/menu_profile"
android:title="프로필"
android:icon="@drawable/ic_baseline_account_box_24"
/>
</menu>
<activity_main>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
>
<FrameLayout
android:id="@+id/fragments_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_nav"
android:layout_alignParentTop="true"
/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav"
app:menu="@menu/bottom_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="#FFC56F"
/>
</RelativeLayout>
상단은 프래그먼트를 뿌려줄 FrameLayout으로 구성해주고 above를 통해 네비게이션을 제외한 부분만 차지할 수 있도록 하였다.
하단은 bottom_menu에서 구성한 메뉴들을 BottomNavigationView로 불러와 하단 네비게이션바를 구성해주었다.
[액티비티 or 프래그먼트]
private lateinit var homeFragment: HomeFragment
private lateinit var chatFragment: ChatFragment
private lateinit var profileFragment: ProfileFragment
@Suppress("DEPRECATION")
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
bottom_nav.setOnNavigationItemSelectedListener(BottomNavItemSelectedListener)
homeFragment = HomeFragment.newInstance()
supportFragmentManager.beginTransaction().add(R.id.fragments_frame, homeFragment).commit()
}
private val BottomNavItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener{
when(it.itemId){
R.id.menu_home -> {
homeFragment = HomeFragment.newInstance()
supportFragmentManager.beginTransaction().replace(R.id.fragments_frame, homeFragment).commit()
}
R.id.menu_chat -> {
chatFragment = ChatFragment.newInstance()
supportFragmentManager.beginTransaction().replace(R.id.fragments_frame, chatFragment).commit()
}
R.id.menu_profile -> {
profileFragment = ProfileFragment.newInstance()
supportFragmentManager.beginTransaction().replace(R.id.fragments_frame, profileFragment).commit()
}
}
true
}
}
lateinit으로 프래그먼트들을 초기화 시켜준다.
import 시켜준 BottomNavigationView를 이용하여 ItemSelectListener를 선언해주고
디폴트 프래그먼트는 home 프래그먼트로 지정해준다.
[아쉬운 점]
xml의 레이아웃을 ConstratinLayout으로 통일시키지 못했다.
'Android' 카테고리의 다른 글
Kotlin, FireBase 채팅어플 만들기 -6- [채팅 리스트_fragment] (0) | 2021.09.09 |
---|---|
Kotlin, FireBase 채팅어플 만들기 -5- [친구창_fragment] (0) | 2021.09.07 |
Kotlin, FireBase 채팅어플 만들기 -3- [Sign Up] (0) | 2021.09.02 |
Kotlin, FireBase 채팅어플 만들기 -2- [Login] (0) | 2021.09.02 |
Kotlin, FireBase 채팅어플 만들기 -1- [Splash] (0) | 2021.09.02 |
댓글