2016年9月19日 星期一

ANDROID – NAVIGATION DRAWER 中取出 HEADERVIEW 的議題

Ref :  http://blog.mosil.biz/2015/10/android-attr-of-header-of-navigation-drawer-is-nullable/


使用  android studio  選擇  Navigation Drawer Activity



從code 可以得知  activity_main 為一開始的layout...

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

點選 activity_main.xml  然後選擇Design... 就可以看到render view...





打開  activity_main.xml  來看


<android.support.design.widget.NavigationView    android:id="@+id/nav_view"    android:layout_width="wrap_content"    android:layout_height="match_parent"    android:layout_gravity="start"    android:fitsSystemWindows="true"    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />


==================================================
nav_header_main.xml 如下:  header



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="@dimen/nav_header_height"    android:background="@drawable/side_nav_bar"    android:gravity="bottom"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageView        android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:paddingTop="@dimen/nav_header_vertical_spacing"        android:src="@drawable/logo" />

    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:paddingTop="@dimen/nav_header_vertical_spacing"        android:text="印刻網"        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="instantstamp.com" />

</LinearLayout>

======================================================
activity_main_drawer.xml 如下:  content



<group android:checkableBehavior="single">
    <item        android:id="@+id/nav_camera"        android:icon="@drawable/ic_menu_camera"        android:title="Import" />
    <item        android:id="@+id/nav_gallery"        android:icon="@drawable/ic_menu_gallery"        android:title="Gallery" />
    <item        android:id="@+id/nav_slideshow"        android:icon="@drawable/ic_menu_slideshow"        android:title="Slideshow" />
    <item        android:id="@+id/nav_manage"        android:icon="@drawable/ic_menu_manage"        android:title="Tools" />
</group>

<item android:title="Communicate">
    <menu>
        <item            android:id="@+id/nav_share"            android:icon="@drawable/ic_menu_share"            android:title="Share" />
        <item            android:id="@+id/nav_send"            android:icon="@drawable/ic_menu_send"            android:title="Send" />
    </menu>
</item>




nav_header_main.xml  為右上



======================================================================


新增一個QaActivity ....  


然後再  MainActivity 裡面新增   跳到  QaActivity 的code...



  public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.        int id = item.getItemId();

        if (id == R.id.nav_allstamp) {
            // Handle the camera action        } else if (id == R.id.nav_others) {

        } else if (id == R.id.nav_question) {

            Intent intent = new Intent();
            intent.setClass(MainActivity.this, QaActivity.class);
            startActivity(intent);

        } else if (id == R.id.nav_shoppingcart) {

        } else if (id == R.id.nav_information) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

也就是當按下  常見問題....就會跳轉到QaActivity......

然後QaActivity 的layout 也是copy  main layout...

setContentView(R.layout.activity_qa);  

<include    layout="@layout/app_bar_qa"    android:layout_width="match_parent"    android:layout_height="match_parent" />


app_bar_qa.xml 的內容如下:

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


content_qa 的內容如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    tools:context="jacky.idv.navigator_test.MainActivity"    tools:showIn="@layout/app_bar_main">


    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="QA"        android:id="@+id/textViewQA"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:layout_marginTop="66dp" />
</RelativeLayout>




所以可以把要加入的內容放在這裡....








沒有留言:

張貼留言