【问题标题】:How to change the size of menu item icon in NavigationView?如何更改 NavigationView 中菜单项图标的大小?
【发布时间】:2015-11-17 16:43:44
【问题描述】:

我有以下菜单项:

<item
   android:id="@+id/lock"
   android:checkable="true"
   android:title="@string/lock" >
   <menu>
       <item
          android:id="@+id/block_mess"
          android:checked="true"
          android:icon="@drawable/chantinnhan"
          android:title="@string/block_mess_string" />
        <item
            android:id="@+id/block_call"
            android:checked="false"
            android:icon="@drawable/chancuocgoi"
            android:title="@string/block_call_string" />
        <item
            android:id="@+id/lock_app"
            android:checked="false"
            android:icon="@drawable/khoaungdung"
            android:title="@string/lock_app_string" />
   </menu>
</item>

...还有更多,但真的很长

但图标真的很小(即使它有 256x256 分辨率)。我想把它变大!这可能吗?

截图如下:

编辑:好的,我们都知道谷歌“锁定”了图标大小。但我想知道我可以“绕过”那个锁并制作一些……可定制的东西吗?

【问题讨论】:

  • 运气好不好???我也卡住了
  • @AmanVerma 还是没有运气,伙计:((
  • 我们有没有比这个尺寸更大的图标的示例应用程序?甚至 Gmail 也有相同大小的图标。我听到和读到的是,navigationView 遵循材料设计指南,因此图标大小与该指南相匹配。
  • 我也需要大尺寸的图标,但如果我们找到一个示例应用程序,也许我们可以给开发者发电子邮件并获取一些知识。 :)
  • @AbdullahShoaib 实际上您可以制作自定义抽屉。不是很好,但它是可定制的。

标签: android material-design navigationview


【解决方案1】:

您可以通过覆盖design_navigation_icon_size 属性来更改navigationView 图标的大小。你可以把它放在维度中,因为你覆盖了一个私有属性,你需要包含tools:override="true"

<dimen name="design_navigation_icon_size" tools:override="true">40dp</dimen>

【讨论】:

  • 很老的问题。但这仍然是一个正确的答案。接受:D
  • 这个答案仍然正确吗?我正在尝试这个,但我没有成功,它总是在 NavigationView 组件中显示相同的大小。
  • 我刚刚在我的代码上尝试过,它仍然有效。您在使用 SupportLibrary 吗?尝试将您的类扩展到 AppCompatActivity。
  • 为什么不提它需要在dimens文件中!
  • @KishanSolanki124 我做到了。再读一遍。
【解决方案2】:

找到解决方案

在下面输入尺寸。

<dimen name="design_navigation_icon_size">48dp</dimen>

【讨论】:

    【解决方案3】:

    在您的 xml 文件中,最短的方法是在 NavigationView 中有一个属性 只需添加它。

    app:itemIconSize="12dp"

    【讨论】:

    • 太棒了!巧合4小时前刚刚回答。 :D
    • 我不知道为什么只有这个解决方案对我有用。我正在使用com.google.android.material.navigation.NavigationView
    • 非常感谢 :)
    【解决方案4】:

    决定图标大小的主要因素是尺寸:navigation_icon_size,看看NavigationMenuItemView类:

     public NavigationMenuItemView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.mIconSize = context.getResources().getDimensionPixelSize(dimen.navigation_icon_size);
    }
    

    所以,我们可以在我们的 dimens 文件中覆盖该属性。

    例如:

    <dimen name="navigation_icon_size">48dp</dimen>
    

    将该代码添加到dimens文件中,您会发现它的大小发生了变化。

    之前:

    之后:

    【讨论】:

    • 已添加,没有任何反应!
    • 这太奇怪了...我会尝试找到另一种方法来做到这一点。
    • ...它实际上应该可以工作,我在我的手机和 genymotion 上测试过,两者都可以工作。或者你可能做错了什么?
    • 我只是在 dimes.xml 中添加了“dimen”行。我正在使用 Android Studio 的原始导航抽屉
    • 改用“design_navigation_icon_size”。谷歌在支持库 23 中添加了 design_ 前缀
    【解决方案5】:

    根据Google自己设置的设计文档,icon应该设置为14sp。我建议您遵守此建议,因为这是所有应用程序都使用的标准。正如您所说,没有应用程序在抽屉式导航中具有大图标,因为这不是开发抽屉式导航图标时的常态。

    【讨论】:

    • 如果这对您有所帮助,您能否接受并投票?非常感谢:)
    • 我们都知道谷歌会“锁定”图标大小。但是我想问的是,我可以通过以编程方式执行某些操作来“绕过”该锁……但是,是的,为您投票:D
    • 您可以尝试使用导航视图的实际布局 xml 文件,但我再次相信 Google 会将其锁定为特定大小。所以没有办法绕过它。
    • 想知道链接文章中哪里提到图标大小应该是14sp
    • 查看规格部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2015-09-19
    • 2015-12-13
    • 2018-09-19
    • 1970-01-01
    相关资源
    最近更新 更多