如何修改ActionBar中NavigationView的图标尺寸
解决方案
你目前无法修改NavigationView图标大小的核心原因是自定义样式中缺少控制导航项图标尺寸的专属属性,按以下步骤修改即可,同时可适配不同屏幕尺寸:
- 方法1:修改自定义
NavigationView样式,新增itemIconSize属性
你可以将属性值关联到dimen资源,在不同屏幕限定符的dimens文件(如values/dimens.xml、values-sw600dp/dimens.xml、values-sw720dp/dimens.xml)中定义不同的尺寸数值,即可实现多尺寸适配。
修改后的样式代码如下:<style name="NavigationView.all" > <item name="android:layout_width">@dimen/widthNavigationView_all</item> <item name="android:layout_height">match_parent</item> <item name="headerLayout">@layout/navigation_all_header</item> <item name="android:layout_gravity">start</item> <item name="itemIconTint">@color/itemIconTint_navigationView</item> <item name="itemTextColor">@color/itemTextColor_navigationView</item> <!-- 新增图标大小控制属性 --> <item name="itemIconSize">@dimen/navigation_icon_size</item> </style> - 方法2:全局生效配置
如果需要让项目中所有NavigationView默认都使用该样式,可在应用的全局主题中添加以下配置:<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <!-- 其他主题配置 --> <item name="navigationViewStyle">@style/NavigationView.all</item> </style> - 方法3:代码动态调整
如果需要在运行时动态修改图标大小,可直接调用NavigationView的自带方法:// Java 示例 navigationView_main.setItemIconSize(getResources().getDimensionPixelSize(R.dimen.navigation_icon_size));// Kotlin 示例 navigationView_main.setItemIconSize(resources.getDimensionPixelSize(R.dimen.navigation_icon_size))
注意:如果修改后图标显示模糊,请确认你使用的图标资源本身有匹配对应分辨率的版本,放置在对应的drawable/mipmap文件夹下。
内容的提问来源于stack exchange,提问作者Nima Khalili
相关产品推荐
相关产品推荐

