You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Kotlin调整MaterialToolbar中navigationIcon的尺寸

解决方法

方案1:XML静态配置(最简单)

MaterialToolbar从Material Components 1.3.0版本开始原生支持app:navigationIconSize属性,直接在布局中指定图标尺寸即可:

<com.google.android.material.appbar.MaterialToolbar
    android:id="@+id/topAppBar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:title="Ticketon"
    app:navigationIcon="@mipmap/ic_launcher_round"
    app:navigationIconSize="24dp" <!-- 新增这行,可自定义尺寸 -->
    app:menu="@menu/toolbar_menu"
    style="@style/Widget.MaterialComponents.Toolbar.Primary"
    />

24dp是Material Design规范推荐的工具栏图标标准尺寸。

方案2:Kotlin动态调整Drawable尺寸

如果需要运行时动态修改图标(比如加载本地用户头像),可以先缩放Drawable再设置给Toolbar:
首先添加dp转px的通用扩展函数:

fun Int.dpToPx(context: Context): Int {
    return TypedValue.applyDimension(
        TypedValue.COMPLEX_UNIT_DIP,
        this.toFloat(),
        context.resources.displayMetrics
    ).toInt()
}

然后调整图标尺寸并设置:

val targetIconSize = 24.dpToPx(this) // this为上下文对象
val originalIcon = ContextCompat.getDrawable(this, R.mipmap.ic_launcher_round) ?: return
originalIcon.setBounds(0, 0, targetIconSize, targetIconSize)
topAppBar.navigationIcon = originalIcon

提示:如果多个界面复用同一个Drawable资源出现样式冲突,可在设置bounds前调用originalIcon.mutate()生成独立的Drawable副本,避免互相影响。

方案3:配合图片加载库调整(适用于网络用户头像)

如果你的用户头像是从网络加载,可直接用Glide、Coil等库在加载时指定尺寸、加圆形裁剪等效果,以Coil为例:

ImageRequest.Builder(context)
    .data("用户头像网络地址")
    .size(24.dpToPx(context)) // 指定加载尺寸
    .transformations(CircleCropTransformation()) // 圆形裁剪,适合头像场景
    .target { topAppBar.navigationIcon = it }
    .build()
    .also { context.imageLoader.enqueue(it) }

内容的提问来源于stack exchange,提问作者Diset

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:06:03