Android Tutorial

Software Setup and Configuration

Android Studio

File Structure

Components

Core Topics

Layout

View

Button

Intent and Intent Filters

Toast

RecyclerView

Fragments

Adapters

Other UI Component

Image Loading Libraries

Date and Time

Material Design

Bars

Working with Google Maps

Chart

Animation

Database

Advance Android

Jetpack

Architecture

App Publish

App Monetization

Align the Navigation Drawer and its Elements towards the Left or Right of the Screen in Android

In Android, the Navigation Drawer is a common UI pattern for navigating between the major sections of an app. By default, the Navigation Drawer slides in from the left side of the screen. However, you can set it to slide in from the right side if you want.

To align the Navigation Drawer and its elements towards the left or right of the screen, follow these steps:

1. Define the Navigation Drawer:

In your layout XML file, ensure you have a DrawerLayout that contains the content view and a NavigationView:

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Main content view (your main UI) -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!-- Your main UI elements go here -->
    </FrameLayout>

    <!-- NavigationView for Navigation Drawer -->
    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"  <!-- 'start' for left, 'end' for right -->
        android:fitsSystemWindows="true">
        <!-- Your menu items go here -->
    </com.google.android.material.navigation.NavigationView>

</androidx.drawerlayout.widget.DrawerLayout>

The key attribute here is android:layout_gravity.

  • For the drawer to slide in from the left side of the screen (default behavior), use android:layout_gravity="start".
  • For the drawer to slide in from the right side of the screen, use android:layout_gravity="end".

Note: "start" and "end" are preferred over "left" and "right" because they adapt to the locale's layout direction (e.g., right-to-left languages).

2. In your Activity:

Ensure you set up the DrawerLayout and ActionBarDrawerToggle to handle the opening and closing of the Navigation Drawer. The setup remains largely the same regardless of which side the drawer emerges from:

val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val toggle = ActionBarDrawerToggle(
    this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close
)
drawerLayout.addDrawerListener(toggle)
toggle.syncState()

Note: Ensure you've defined R.string.navigation_drawer_open and R.string.navigation_drawer_close in your strings.xml.

That's it! With these configurations, you can easily set the alignment of your Navigation Drawer to either side of the screen. Adjusting individual elements within the Navigation Drawer (e.g., menu items) is done within the NavigationView and its associated menu XML, and is not affected by the side from which the drawer emerges.

  1. Android Navigation Drawer alignment:

    • Description: Android Navigation Drawer is aligned to the left of the screen by default. To align it differently, you can modify its gravity or layout attributes.

    • Code:

    <androidx.drawerlayout.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawerLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="end">
    
        <!-- Your main content goes here -->
    
        <com.google.android.material.navigation.NavigationView
            android:id="@+id/navigationView"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="end">
            <!-- Navigation Drawer content -->
        </com.google.android.material.navigation.NavigationView>
    </androidx.drawerlayout.widget.DrawerLayout>
    
  2. Align Navigation Drawer items in Android:

    • Description: Aligning Navigation Drawer items is typically handled in the XML layout file of the NavigationView. Use attributes like android:layout_gravity to control the alignment.

    • Code:

    <item
        android:id="@+id/nav_item1"
        android:title="Item 1"
        android:layout_gravity="top"/>
    
  3. Android Navigation Drawer position left/right:

    • Description: The position of the Navigation Drawer is defined by the layout_gravity attribute. Use start for left and end for right.

    • Code:

    <androidx.drawerlayout.widget.DrawerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!-- Your main content goes here -->
    
        <com.google.android.material.navigation.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start">
            <!-- Navigation Drawer content -->
        </com.google.android.material.navigation.NavigationView>
    </androidx.drawerlayout.widget.DrawerLayout>
    
  4. How to move Navigation Drawer to the left in Android:

    • Description: To move the Navigation Drawer to the left, set the layout_gravity attribute to "start" in the XML layout file.

    • Code:

    <androidx.drawerlayout.widget.DrawerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!-- Your main content goes here -->
    
        <com.google.android.material.navigation.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start">
            <!-- Navigation Drawer content -->
        </com.google.android.material.navigation.NavigationView>
    </androidx.drawerlayout.widget.DrawerLayout>
    
  5. Change Navigation Drawer gravity in Android:

    • Description: Change the gravity of the Navigation Drawer by modifying the layout_gravity attribute in the XML layout file.

    • Code:

    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="end">
        <!-- Navigation Drawer content -->
    </com.google.android.material.navigation.NavigationView>
    
  6. Android Navigation Drawer layout customization:

    • Description: Customize the Navigation Drawer layout by adjusting its XML attributes, colors, styles, and adding custom views.

    • Code:

    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:itemTextColor="@color/nav_item_text_color"
        app:headerLayout="@layout/nav_header_layout">
        <!-- Customized Navigation Drawer content -->
    </com.google.android.material.navigation.NavigationView>
    
  7. Set Navigation Drawer alignment in Android Studio:

    • Description: Set the Navigation Drawer alignment directly in the XML layout file in Android Studio using the layout_gravity attribute.

    • Code:

    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start">
        <!-- Navigation Drawer content -->
    </com.google.android.material.navigation.NavigationView>
    
  8. Move Navigation Drawer to the right Android:

    • Description: Move the Navigation Drawer to the right by setting the layout_gravity attribute to "end" in the XML layout file.

    • Code:

    <androidx.drawerlayout.widget.DrawerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!-- Your main content goes here -->
    
        <com.google.android.material.navigation.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="end">
            <!-- Navigation Drawer content -->
        </com.google.android.material.navigation.NavigationView>
    </androidx.drawerlayout.widget.DrawerLayout>
    
  9. Adjust Navigation Drawer position in Android app:

    • Description: Adjust the position of the Navigation Drawer by modifying the layout_gravity attribute in the XML layout file of the NavigationView.

    • Code:

    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start">
        <!-- Navigation Drawer content -->
    </com.google.android.material.navigation.NavigationView>
    
  10. Android Navigation Drawer layout XML attributes:

    • Description: Customize the Navigation Drawer layout using various XML attributes, such as app:itemTextColor, app:itemIconTint, app:headerLayout, etc.

    • Code:

    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:itemTextColor="@color/nav_item_text_color"
        app:itemIconTint="@color/nav_item_icon_color"
        app:headerLayout="@layout/nav_header_layout">
        <!-- Customized Navigation Drawer content -->
    </com.google.android.material.navigation.NavigationView>