美文网首页
动态设置BottomNavigationView下面tab图标的

动态设置BottomNavigationView下面tab图标的

作者: 有一点小怪坏 | 来源:发表于2022-08-29 15:25 被阅读0次

    目标:动态设置tab的大小

    1.废话不多说了,直接上代码

    2个工具类

    object BottomNavigationViewHelper {
    
        /**
         * 设置所有图片尺寸
         *
         * @param view BottomNavigationView
         * @param width 宽
         * @param height 高
         */
        fun setAllImageSize(view: BottomNavigationView, width: Int, height: Int) {
            val menuView = view.getChildAt(0) as BottomNavigationMenuView
            try {
                for (i in 0 until menuView.childCount) {
                    val item =
                        menuView.getChildAt(i) as BottomNavigationItemView
                    val imageView =
                        item.findViewById<ImageView>(R.id.icon)
                    imageView.layoutParams.width = width
                    imageView.layoutParams.height = height
                }
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    
        /**
         * 设置单个条目图片尺寸
         *
         * @param position 条目位置
         * @param view BottomNavigationView
         * @param width 宽
         * @param height 高
         */
        fun setOneImageSize(
            position: Int,
            view: BottomNavigationView,
            width: Int,
            height: Int
        ) {
            val menuView = view.getChildAt(0) as BottomNavigationMenuView
            try {
                for (i in 0 until menuView.childCount) {
                    if (i == position) {
                        val item =
                            menuView.getChildAt(i) as BottomNavigationItemView
                        val imageView =
                            item.findViewById<ImageView>(R.id.icon)
                        imageView.layoutParams.width = width
                        imageView.layoutParams.height = height
                    }
                }
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    
    }
    
    
    object ScreenUtils {
    
        /**
         * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
         */
        fun dip2px(context: Context, dpValue: Float): Int {
            val scale = context.resources.displayMetrics.density
            return (dpValue * scale + 0.5f).toInt()
        }
    }
    

    2.下面是使用
    在MainActivity中:

    companion object {
            //选中时tab图片尺寸大小
            const val selectedSize = 29.0f
    
            //未选中时tab图片尺寸大小
            const val unSelectedSize = 23.0f
        }
    

    设置一个图标的大小

    BottomNavigationViewHelper.setOneImageSize(
                        0,
                        binding.navigation,
                        ScreenUtils.dip2px(this, selectedSize),
                        ScreenUtils.dip2px(this, selectedSize)
                    )
    

    设置所有图标的大小

    BottomNavigationViewHelper.setAllImageSize(
                    binding.navigation,
                    ScreenUtils.dip2px(this, unSelectedSize),
                    ScreenUtils.dip2px(this, unSelectedSize)
                )
    

    关于设置图标大小的时机,要看你的业务需求了,一般来说是activity创建的时候(setAllImageSize);
    或者BottomNavigationView点击事件 之后 (setOneImageSize)。根据你的业务来。

    可以参考我的


    微信截图_20220901103049.png 微信截图_20220901103024.png

    喜欢的话可以点个赞~

    相关文章

      网友评论

          本文标题:动态设置BottomNavigationView下面tab图标的

          本文链接:https://www.haomeiwen.com/subject/sbilnrtx.html