web-dev-qa-db-fra.com

Comment changer la taille de l'icône d'un élément de menu dans NavigationView?

J'ai l'élément de menu suivant:

<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>

... il y a encore plus mais c'est vraiment long

mais l'icône est vraiment petite (même si elle a la résolution 256x256). Je voudrais le rendre plus grand! Est-ce possible? Voici la capture d'écran:

enter image description here

EDIT: OK, nous savons tous les deux que Google "verrouille" la taille de l'icône. Mais je veux savoir que je peux "contourner" ce verrou et rendre quelque chose ... personnalisable?

40
Chris Maverick

Vous pouvez modifier la taille de l'icône de navigationView en remplaçant design_navigation_icon_size attribut. Vous pouvez le mettre en creux et comme vous surchargez un attribut privé, vous devez inclure tools:override="true"

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

solution obtenue

Faire ci-dessous l'entrée dans dimens.

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

La principale chose qui décide de la taille de l'icône est la dimension: navigation_icon_size, regardez la classe NavigationMenuItemView:

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

donc, nous pouvons simplement dépasser la propriété dans notre fichier dimens.

Par exemple:

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

ajoutez ce code dans le fichier dimens et vous pourrez constater que sa taille a changé.

Avant:

enter image description here

Après:

enter image description here

9
Zuo VJ

Selon le document de conception défini par Google lui-même, les icônes doivent être définies sur 14sp. Je vous suggère de respecter cette recommandation, car il s'agit d'une norme utilisée dans toutes les applications. Comme vous l'avez dit, aucune application ne comporte de grandes icônes dans le tiroir de navigation, car ce n'est pas la norme lors du développement d'une icône de tiroir de navigation.

enter image description here

5
Michele La Ferla