LoginSignup
0
0

[Android]BottomNavigationViewのアイコンサイズ変更

Posted at

BottomNavigationViewでハマったこと

・BottomNavigationViewの特定のアイコンサイズを変更したかった
まとめて全部のアイコンサイズを変更するのはXml等で比較的簡単にできたけど個別での変更がなかなか情報がなくて困った・・・

private fun fixAllIconSize() {
    // ※1
    val menuView = viewBinding.bottomNavigation.getChildAt(0) as BottomNavigationMenuView
    // ※2
    0.until(menuView.childCount).forEach { index ->
      // ※3
      val icon = menuView.getChildAt(index).findViewById<ImageView>(R.id.navigation_bar_item_icon_view)
      val displayMetrics = resources.displayMetrics
      // ※4
      val layoutParams = (icon.layoutParams).apply {
        when (index) {
          // 例えば一番左のアイコンのサイズを変えたい
          0 -> {
            width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40f, displayMetrics).toInt()
            height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40f, displayMetrics).toInt()
          }
        }
      }
      icon.layoutParams = layoutParams
    }
  }

上記でできた。
詰まったところは

val icon = menuView.getChildAt(index).findViewById<ImageView>(R.id.navigation_bar_item_icon_view)

の部分で指定するidがわからなくて超詰まった。
違うものを指定するとiconがnullになるのでクラッシュします。

やっていることは至極簡単でBottomNavigationViewを取得してその中から特定のアイコンをImageviewとして取得する。
その後にLayoutParamsでサイズを変更してセットしているだけ。

意外と情報がなくて困りますね・・・

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0