【问题标题】:How to change selected BottomNavigationView icon size如何更改选定的 BottomNavigationView 图标大小
【发布时间】:2020-04-14 07:43:12
【问题描述】:

我正在使用本机 BottomNavigationView,并且我想将选定的图标大小更改为大于未选定的图标大小。 (exp.选定的图标 40dp,其他图标大小 20dp)。

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_centerVertical="true"
        android:scaleType="center"
        style="@style/Widget.Design.BottomNavigationView"
        app:labelVisibilityMode="unlabeled"
        app:menu="@menu/navigation_menu" />

<item
    android:id="@+id/homePageFragment"
    android:icon="@drawable/selector_nav_home"
    android:orderInCategory="1"
    android:title="" />

<item
    android:id="@+id/discoverPageFragment"
    android:icon="@drawable/selector_nav_discover"
    android:orderInCategory="2"
    android:title="" />

<item
    android:id="@+id/qrPageFragment"
    android:icon="@drawable/selector_nav_qr"
    android:orderInCategory="3"
    android:title="" />

<item
    android:id="@+id/myAccountFragment"
    android:icon="@drawable/selector_nav_profile"
    android:orderInCategory="4"
    android:title="" />

<item android:drawable="@drawable/ic_bottom_navigation_profile" android:state_checked="true"/>

<item android:drawable="@drawable/ic_navigation_profile" android:state_checked="false"/>

【问题讨论】:

  • 也许这可以帮助你:stackoverflow.com/questions/41516568/…
  • 我检查了那个问题,但是它改变了所有图标@DuyiLian
  • 你可以使用大尺寸的 ic_bottom_navigation_profile 然后 ic_navigation_profile
  • @NidhiSavaliya 它没有解决我的问题:(

标签: android xml kotlin bottomnavigationview android-navigationview


【解决方案1】:

您可以像这样更改所选项目的文本大小:

styles.xml:

<style name="bottomNavigationView.Active" parent="@style/TextAppearance.AppCompat.Caption">
        <item name="android:textSize">16sp</item>
</style>

bottom_navigation_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.bottomnavigation.BottomNavigationView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/bottomNavView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?android:attr/windowBackground"
    app:menu="@menu/bottom_nav_menu"
    app:labelVisibilityMode="labeled"
    app:itemIconSize="24dp"
    android:scaleType="center"
    app:itemTextAppearanceActive="@style/bottomNavigationView.Active" />

由于文本大小增加,所选项目的图标会抬起,整体上看起来所选元素的大小增加了:

like this

【讨论】:

    【解决方案2】:

    试试这个来改变所选项目的图标大小

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        changeItemIconSize(item.itemId)
        return true
    }     
    
    private fun changeItemIconSize(selectedItemId: Int) {
        val displayMetrics = resources.displayMetrics
        val menuView = bottomMenu.getChildAt(0) as BottomNavigationMenuView
        bottomMenu.itemIconSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24f, displayMetrics).toInt()
        val iconViewSelected =
            menuView.findViewById<View>(selectedItemId).findViewById<View>(com.google.android.material.R.id.icon)
        val layoutParams = iconViewSelected.layoutParams
        layoutParams.height =
            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32f, displayMetrics).toInt()
        layoutParams.width =
            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32f, displayMetrics).toInt()
        iconViewSelected.layoutParams = layoutParams
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 2019-11-10
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多