Search code examples
javaandroidxmlnavigation-drawer

How do I hide the default logo space in Navigation Bar?


Currently my navigation drawer is showing a default space before 'Settings and Privacy' item. I want to remove this space and make the text aligned to left.

enter image description here

How can I do this?

Here's my XML code:

<group android:checkableBehavior="single">
    <item
        android:id="@+id/menu_bookmarks"
        android:icon="@drawable/ic_baseline_bookmarks_24"
        android:title="Bookmarks"
        />

    <item
        android:id="@+id/menu_topics"
        android:icon="@drawable/ic_baseline_topic_24"
        android:title="Topics"
        />

    <item
        android:id="@+id/menu_lists"
        android:icon="@drawable/ic_baseline_featured_play_list_24"
        android:title="Lists"
        />
</group>

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/menu_settings"
            android:title="Settings and privacy"
            android:icon="@null"
            />

        <item
            android:id="@+id/menu_help"
            android:title="Help Centre"
            android:icon="@null"
            />
    </group>

Solution

  • Create 2 groups of item in your menu like this and divide them to icon and non icon

    <group
    android:id="@+id/menu_top"
    <item>
    </item>
    <item>
    </item>
    </group>
    <group
    android:id="@+id/menu_bottom"
    <item>
    android:icon="@null"
    </item>
    <item>
    android:icon="@null"
    </item>
    </group>
    

    This should remove the space automatically since you have two groups of items

    if that doesn't work use

    int positionOfMenuItem =3; //the position of item you need to the left
    
    MenuItem item = menu.getItem(positionOfMenuItem);
    
    SpannableString s = new SpannableString(settingsItemTitle);
    
    s.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_LEFT), 0, s.length(), 0);
    
    item.setTitle(s);