Search code examples
androidxamarinxamarin.androidnavigationviewandroid-navigationview

Xamarin Android Menu - NavigationView background image and fullscreen


I need help with Menu in Android...

  • First: I need in menu image in background
  • Second: if it possible will be good full screen menu

My menu layout looks like this:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:fillViewport="true">
  <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    >
    <ImageView
      android:id="@+id/nav_background"
      android:src="@drawable/test_back"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:alpha="1"
      android:scaleType="centerCrop"/>
<android.support.design.widget.NavigationView 
                                              android:id="@+id/navigation_view"
                                              android:layout_height="match_parent"
                                              android:layout_width="match_parent"
                                              android:layout_gravity="end"
                                              android:theme="@style/NavigationViewStyle"
                                              android:fitsSystemWindows="true"
                                              local:itemTextColor="@color/white"
                                              android:background="@color/main_red_opacity"
                                             >

  <LinearLayout  android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_gravity="bottom"
                 android:orientation="vertical">
    <LinearLayout  
      android:layout_marginRight="30dp"
      android:layout_marginLeft="30dp"
      android:layout_marginTop="50dp"
      android:layout_marginBottom="50dp"
      android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:layout_gravity="bottom"
                   android:orientation="vertical">
      <TextView
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="22dp"
        android:id="@+id/nav_menuItem"
        android:text="MenuItem"
        android:textColor="@color/white"
      />
      <TextView
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="22dp"
        android:id="@+id/nav_menuItem"
        android:text="MenuItem"
        android:textColor="@color/white"
      />
      <ImageView
        android:layout_marginTop="45dp"
        android:layout_marginBottom="45dp"
        android:layout_height="1dp"
        android:layout_width="match_parent"
        android:background="@color/main_gray"
        />
      <TextView
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="22dp"
        android:id="@+id/nav_menuItem"
        android:text="MenuItem"
        android:textColor="@color/white"
      />
      <TextView
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="22dp"
        android:id="@+id/nav_menuItem"
        android:text="MenuItem"
        android:textColor="@color/white"
      />
      <TextView
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="22dp"
        android:id="@+id/nav_menuItem"
        android:text="MenuItem"
        android:textColor="@color/white"
      />

      </LinearLayout>

    <ImageView
      android:layout_gravity="left"
      android:src="@drawable/logo"
      android:layout_width="match_parent"
      android:layout_height="50dp"
      android:id="@+id/logoBottom"
      android:scaleType="fitCenter" />
    </LinearLayout>

</android.support.design.widget.NavigationView>

  </RelativeLayout>
</ScrollView>

This works but I need layout with Menu Items on bottom of menu but result is: enter image description here

and without ImageView it looks like this: enter image description here

This I need but with image in background...

EDIT

  <!-- Navigation style -->
  <style name="NavigationViewStyle">
    <item name="android:textSize">18dp</item>
    <!-- menu item text size-->
    <item name="android:listPreferredItemHeightSmall">60dp</item>
    <!-- menu item height-->
  </style>

Github demo: https://github.com/pinkysek/XabluDemoApp/tree/master/XabluAppTest


Solution

  • Change RelativeLayout to FrameLayout:

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:local="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:fillViewport="true">
      <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:local="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
       android:background="@drawable/test_back"
        >
      </FrameLayout>
    </ScrollView>
    

    and add android:layout_marginLeft="-64dp" in your FrameLayout which id is navigation_frame in activity_main.axml layout, like this:

    <FrameLayout
        android:id="@+id/navigation_frame"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_marginLeft="-64dp"
        android:layout_gravity="left|start" />