2016年1月20日 星期三

不需要 ActionBar 的 Navigation Drawer 處理。


在惡補 Android 編程的過程中,嘗試製作左邊拉入式選單。有一個很好用的 Navigation Drawer 幫得上忙。可是在網絡上找得到的都範例都用到了 ActionBar,而我是不想使用。找呀找,終於找到了方法。原來只要在 Activity 中取得 Drawer 物件,然後調用 openDrawer(Gravity.LEFT); 顯示選單;調用 closeDrawer(Gravity.LEFT); 隱藏選單就行了。

HomeActivity.java
//------------------------------------------------------------------------------
public void showMenu()  {
 final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawerLayout);
 drawer.openDrawer(Gravity.LEFT);
}

//------------------------------------------------------------------------------
public void hideMenu()  {
 final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawerLayout);
 drawer.closeDrawer(Gravity.LEFT);
}

layout_home.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.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">

    <LinearLayout
        android:background="@drawable/background"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <include layout="@layout/layout_header"/>

        <LinearLayout
            android:id="@+id/home_fragment"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="fill_parent">
        </LinearLayout>
    </LinearLayout>

    <include layout="@layout/fragment_main_menu"/>
</android.support.v4.widget.DrawerLayout>

fragment_main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainmenu_container"
    android:layout_gravity="start"
    android:orientation="horizontal"
    android:background="@color/COLOR_MENU_FILTER"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <!--  Menu area  -->
    <LinearLayout
        android:background="@color/COLOR_MENU_BACKGROUND"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="0.7">

        <!--  Close menu button  -->
        <ImageButton
            android:id="@+id/mainmenu_close_button"
            android:background="@color/COLOR_MENU_TRANSPARENCY"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="@dimen/MAINMENU_MARGIN_TOP"
            android:paddingLeft="@dimen/MAINMENU_MARGIN_LEFT"
            android:paddingRight="@dimen/MAINMENU_MARGIN_RIGHT"
            android:paddingBottom="@dimen/MAINMENU_MARGIN_BOTTOM"
            android:src="@drawable/button_close"/>

        <!--  Option 1:  -->
        <RelativeLayout
            android:id="@+id/mainmenu_01_cell"
            android:orientation="horizontal"
            android:layout_below="@id/mainmenu_close_button"
            android:paddingTop="@dimen/MAINMENU_MARGIN_SPACING"
            android:paddingBottom="@dimen/MAINMENU_MARGIN_SPACING"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/mainmenu_01_icon"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon_01_on"/>
            <ImageView
                android:id="@+id/mainmenu_01_indicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:src="@drawable/icon_indicator"
                android:visibility="invisible"
                android:layout_centerVertical="true"/>
            <TextView
                android:id="@+id/mainmenu_01_text"
                android:layout_centerVertical="true"
                android:text="@string/MENUVIEW_OPTION_00"
                android:textColor="@color/COLOR_MENU_TEXT_ON"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@id/mainmenu_01_indicator"
                android:layout_toRightOf="@id/mainmenu_01_icon"
                android:textAlignment="textStart"/>
        </RelativeLayout>

        <!--  Option 2  -->
        <RelativeLayout
            android:id="@+id/mainmenu_02_cell"
            android:orientation="horizontal"
            android:layout_below="@id/mainmenu_01_cell"
            android:paddingTop="@dimen/MAINMENU_MARGIN_SPACING"
            android:paddingBottom="@dimen/MAINMENU_MARGIN_SPACING"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/mainmenu_02_icon"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon_02_on"/>
            <ImageView
                android:id="@+id/mainmenu_02_indicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:src="@drawable/icon_indicator"
                android:visibility="invisible"
                android:layout_centerVertical="true"/>
            <TextView
                android:id="@+id/mainmenu_02_text"
                android:layout_centerVertical="true"
                android:text="@string/MENUVIEW_OPTION_01"
                android:textColor="@color/COLOR_MENU_TEXT_ON"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@id/mainmenu_02_indicator"
                android:layout_toRightOf="@id/mainmenu_02_icon"
                android:textAlignment="textStart"/>
        </RelativeLayout>

        <!--  Option 3  -->
        <RelativeLayout
            android:id="@+id/mainmenu_03_cell"
            android:orientation="horizontal"
            android:layout_below="@id/mainmenu_02_cell"
            android:paddingTop="@dimen/MAINMENU_MARGIN_SPACING"
            android:paddingBottom="@dimen/MAINMENU_MARGIN_SPACING"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/mainmenu_03_icon"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon_03_on"/>
            <ImageView
                android:id="@+id/mainmenu_03_indicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:src="@drawable/icon_indicator"
                android:visibility="invisible"
                android:layout_centerVertical="true"/>
            <TextView
                android:id="@+id/mainmenu_03_text"
                android:layout_centerVertical="true"
                android:text="@string/MENUVIEW_OPTION_02"
                android:textColor="@color/COLOR_MENU_TEXT_ON"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@id/mainmenu_03_indicator"
                android:layout_toRightOf="@id/mainmenu_03_icon"
                android:textAlignment="textStart"/>
        </RelativeLayout>

        <!--  Option 4  -->
        <RelativeLayout
            android:id="@+id/mainmenu_04_cell"
            android:orientation="horizontal"
            android:layout_below="@id/mainmenu_03_cell"
            android:paddingTop="@dimen/MAINMENU_MARGIN_SPACING"
            android:paddingBottom="@dimen/MAINMENU_MARGIN_SPACING"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/mainmenu_04_icon"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon_04_on"/>
            <ImageView
                android:id="@+id/mainmenu_04_indicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:src="@drawable/icon_indicator"
                android:visibility="invisible"
                android:layout_centerVertical="true"/>
            <TextView
                android:id="@+id/mainmenu_04_text"
                android:layout_centerVertical="true"
                android:text="@string/MENUVIEW_OPTION_03"
                android:textColor="@color/COLOR_MENU_TEXT_ON"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@id/mainmenu_04_indicator"
                android:layout_toRightOf="@id/mainmenu_04_icon"
                android:textAlignment="textStart"/>
        </RelativeLayout>

        <!--  Footer  -->
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/mainmenu_version_code"
                android:text="@string/MENUVIEW_VERSION"
                android:textColor="@color/COLOR_MENU_TEXT_OFF"
                android:textAlignment="textEnd"
                android:textSize="12dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentBottom="true"
                android:layout_marginRight="@dimen/MAINMENU_MARGIN_RIGHT"
                android:layout_marginBottom="@dimen/MAINMENU_MARGIN_BOTTOM"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            </TextView>

            <TextView
                android:id="@+id/mainmenu_copyright"
                android:text="@string/MENUVIEW_COPYRIGHT"
                android:textColor="@color/COLOR_MENU_TEXT_OFF"
                android:textSize="12dp"
                android:layout_alignParentBottom="true"
                android:layout_marginLeft="@dimen/MAINMENU_MARGIN_LEFT"
                android:layout_marginBottom="@dimen/MAINMENU_MARGIN_BOTTOM"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            </TextView>

            <View
                android:id="@+id/mainmenu_line"
                android:background="@color/COLOR_MENU_TEXT_OFF"
                android:layout_above="@id/mainmenu_copyright"
                android:layout_marginLeft="@dimen/MAINMENU_MARGIN_LEFT"
                android:layout_marginRight="@dimen/MAINMENU_MARGIN_RIGHT"
                android:layout_marginBottom="@dimen/MAINMENU_MARGIN_BOTTOM"
                android:layout_width="match_parent"
                android:layout_height="1dp"/>

            <TextView
                android:id="@+id/mainmenu_terms"
                android:text="@string/MENUVIEW_TERMS"
                android:textColor="@color/COLOR_MENU_TEXT_OFF"
                android:paddingTop="@dimen/MAINMENU_MARGIN_TOP"
                android:paddingLeft="@dimen/MAINMENU_MARGIN_LEFT"
                android:paddingBottom="@dimen/MAINMENU_MARGIN_BOTTOM"
                android:layout_above="@id/mainmenu_line"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            </TextView>
        </RelativeLayout>

    </LinearLayout>
</LinearLayout>

沒有留言: