BottomNavigationView에 배지를 표시

BottomNavigationView에서 배지를 표시하는 기능이 추가되었다는 기사를 보고 자신도 시도해 보았다.
하지만 배지를 표시는 할 수 없잖아! ?

무슨 일이야?
시라베 보았다.

결론



AndroidX의 material 라이브러리의 alpha06에서 사용할 수 있게 되었다.
후투에 서포트 라이브러리로 사용할 수 있을까 생각하고 있었어. . .
여러분도 안드로이드X를 교체합시다!

  • android.support.design.widget.BottomNavigationView
    (com.android.support:design)
  • 28.0.0 → 비 대응


  • com.google.android.material.bottomnavigation.BottomNavigationView
    (com.google.android.material:material)
  • 1.0.0 : 비대응
  • 1.1.0-alpha05 : 비대응
  • 1.1.0-alpha06 : 대응! ! ! (여기에서)
  • 1.1.0-alpha07 : 대응
  • 1.1.0-alpha08 : 대응 (showBadge ()이 사라졌기 때문에주의)


  • 화면 샘플





    구현 방법



    AndroidStudio의 BottomNavigationViewActivity를 기반으로 수정.

    alpha06~alpha07까지



    바지 표시가 추가되었습니다.
    showBadge()에서 버지가 표시되지만,
    인수 menuItemId 는 getMenu().getItem(0).itemId 로 취득한 ID를 사용해 주세요.

    MainActivity.kt
    package com.example.androidxapp
    
    import android.os.Bundle
    import com.google.android.material.bottomnavigation.BottomNavigationView
    import androidx.appcompat.app.AppCompatActivity
    import android.widget.TextView
    import androidx.core.view.get
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val navView: BottomNavigationView = findViewById(R.id.nav_view)
    
            textMessage = findViewById(R.id.message)
            navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
    
            navView.menu.getItem(0).itemId.let {
                navView.showBadge(it).apply {
                    number = 999
                }
            }
        }
    }
    

    alpha08부터



    showBadge()가 삭제되었습니다.
    BadgeDrawable#isVisible=true로 설정합니다.

    MainActivity.kt
    package com.example.androidxapp
    
    import android.os.Bundle
    import com.google.android.material.bottomnavigation.BottomNavigationView
    import androidx.appcompat.app.AppCompatActivity
    import android.widget.TextView
    import androidx.core.view.get
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val navView: BottomNavigationView = findViewById(R.id.nav_view)
    
            textMessage = findViewById(R.id.message)
            navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
    
            navView.menu.getItem(0).itemId.let {
                navView.getOrCreateBadge(it).apply {
                    number = 999
                    isVisible = true
                }
            }
        }
    }
    

    이조

    좋은 웹페이지 즐겨찾기