先上視圖
- NavigationView:必須放在所有佈局的最下面纔行
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:background="@color/color_green6"
android:orientation="vertical"
tools:context="com.y.activity.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_green4" />
</LinearLayout>
<android.support.v4.widget.DrawerLayout
android:id="@+id/show_drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout style="@style/show_LinearLayout">
<RelativeLayout
style="@style/show_RelativeLayout"
android:layout_marginRight="10dp"
android:background="@drawable/shape_rectangle_red">
<ImageView
android:id="@+id/time_iv"
style="@style/show_RelativeLayout_iv"
android:src="@mipmap/time" />
<TextView
android:id="@+id/time_tv"
style="@style/show_RelativeLayout_tv"
android:layout_toRightOf="@+id/time_iv"
android:text="工作時長" />
<TextView
android:id="@+id/time_stat"
style="@style/show_RelativeLayout_tvdata"
android:layout_below="@+id/time_tv"
android:layout_toRightOf="@+id/time_iv"
android:text="22.4V" />
</RelativeLayout>
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:src="@mipmap/chars" />
</LinearLayout>
<!--側滑欄 菜單-->
<android.support.design.widget.NavigationView
android:id="@+id/navigationview"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/slide_menu_item_yan"
android:fitsSystemWindows="true"
app:headerLayout="@layout/activity_main_head"
app:menu="@menu/menu_drawerlayout">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
- 頭佈局:app:headerLayout="@layout/activity_main_head"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/head_person"
android:background="@drawable/shape_oval"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginTop="42dp"
android:src="@drawable/slide_head_person"
android:contentDescription="TODO" />
<TextView
android:id="@+id/head_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="七月"
android:textColor="#ffffff"
android:textSize="18sp" />
<!--android:cursorVisible="false" 不顯示光標-->
<EditText
android:id="@+id/head_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="18dp"
android:hint="總有人正年輕"
android:cursorVisible="false"
android:theme="@style/EditTextUnderline"
android:textColor="#ffffff"
android:textSize="16sp"/>
</LinearLayout>
- 子佈局 :app:menu="@menu/menu_drawerlayout
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/slide_emil"
android:icon="@mipmap/emil"
android:title="郵箱" />
<item
android:id="@+id/slide_db"
android:icon="@drawable/slide_menu_item_daiban"
android:title="待辦" />
<item
android:id="@+id/slide_rc"
android:icon="@drawable/slide_menu_item_richeng"
android:title="日程" />
<item
android:id="@+id/slide_sc"
android:icon="@drawable/slide_menu_item_shoucang"
android:title="收藏" />
</group>
<item android:title="其他">
<menu>
<item
android:id="@+id/slide_set"
android:icon="@drawable/slide_set"
android:title="設置" />
<item
android:id="@+id/slide_about"
android:icon="@drawable/slide_about"
android:title="關於我們" />
<item
android:id="@+id/slide_exit"
android:icon="@drawable/slide_exit"
android:title="退出登錄" />
</menu>
</item>
</menu>
- NavigationView:頭佈局,及子佈局的item對象獲取
// --------- NavigationView 側滑欄 頭佈局 控件對象獲取 ----
mNavigationView = findViewById(R.id.navigationview); //側滑欄
View headerView = mNavigationView.getHeaderView(0); //獲取NavigationView側滑欄的頭佈局
mHeadPerson = headerView.findViewById(R.id.head_person);
// ----- 其他 子佈局 設置 ---------
Menu mNavigationViewMenu = mNavigationView.getMenu(); //獲取 NavigationView 的子佈局item 對象
mNavigationView.setItemIconTintList(null); //設置item圖標可以顯示顏色,不再是統一的灰白色
mEmil = mNavigationViewMenu.findItem(R.id.slide_emil);
-
NavigationView:頭佈局、子佈局item點擊事件
-
頭佈局點擊事件
@Override
public void onClick(View v) {
switch (v.getId()) {
// ----------- 側滑欄 頭佈局 控件 ---------
case R.id.machine_head: //head
break;
case R.id.machine_date: //時間
break;
}
}
- 子佈局item點擊事件
// 側滑欄 slideMenu 滑出 以及menu控件的點擊事件
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
// mDrawerLayout.closeDrawer(mNavigationView); //關閉側滑欄 每次點擊item後關閉 側滑欄
switch (menuItem.getItemId()) {
case R.id.offlinebundle:
break;
}
return false;
}
});