安卓NavigationView使用方法
阿新 • • 發佈:2018-12-10
目錄
匯入依賴
使用Design下的NavigationView前匯入依賴步驟
在這個頁面中直接找到design這個依賴,點選後再點選這兩個視窗上的OK按鈕,等待編譯完成就完成匯入了!
(可能版本不一樣,匯入即可)
13.1.5 介紹NavigationView
Google在5.0之後推出的NavitationView,所有的佈局控制元件放在DrawerLayout中來使用,NavigationView的作用就像這樣,實現側拉效果。和DrawerLayout效果幾分差異,QQ從左至右從邊滑動的側拉效果。上半部分圖片背景,圓形頭像,下面每一個都是導航選單現在就來實現一下它(雖然是Iphone圖,但是沒關係了,就是這個道理)。
佈局檔案、標籤屬性
敲出最簡單的佈局,實現最簡單的效果
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout 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" tools:context=".MainActivity"> <LinearLayout android:background="#4d7aed" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:gravity="center" android:textSize="18sp" android:text="這裡是一個主頁面" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <android.support.design.widget.NavigationView android:layout_gravity="left" android:background="#ffffff" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout>
將所有佈局控制元件放下DrawerLayout 中,NavigationView加上屬性android:layout_gravity="left"實現左側滑!
如果加一個頭佈局檔案,姐可以側拉出這樣的效果佈局程式碼如下
主佈局檔案activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout 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" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#4d7aed"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="這裡是一個主頁面" android:textSize="18sp" /> </LinearLayout> <android.support.design.widget.NavigationView app:headerLayout="@layout/layout" android:layout_width="450dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#ffffff"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout>
頭佈局檔案layout.xml
<?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="260dp"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="230dp"
android:background="@mipmap/kb" />
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="#63a6e9"
android:gravity="center"
android:text="《魁拔》"
android:textColor="#fff"
android:textSize="18sp" />
</LinearLayout>
之後加上menu就可以實現這樣的效果了(雖然醜了,但是還是可以實現,要求美觀就細扣)
建立的menu應該在這裡
menu.xml
<?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/item1"
android:title="功能列表1"></item>
<item
android:id="@+id/item2"
android:title="功能列表2"></item>
<item
android:id="@+id/item3"
android:title="功能列表3"></item>
<item
android:id="@+id/item4"
android:title="功能列表4"></item>
<item
android:id="@+id/item5"
android:title="功能列表5"></item>
</group>
</menu>
還可以在每個item加上 android:icon="" ,為這個item設定上圖示
佈局檔案
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4d7aed">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="這裡是一個主頁面"
android:textSize="18sp" />
</LinearLayout>
<android.support.design.widget.NavigationView
app:menu="@menu/menu"
app:headerLayout="@layout/layout"
android:layout_width="450dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#ffffff">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
頭佈局檔案
<?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="260dp"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="230dp"
android:background="@mipmap/kb" />
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="#63a6e9"
android:gravity="center"
android:text="《魁拔》"
android:textColor="#fff"
android:textSize="18sp" />
</LinearLayout>
NavitationView常用屬性
item加入點選事件
當佈局檔案中app:menu="@menu/item_menu"加入後,要為對應的item加上點選事件,這時候用到的是setNavigationItemSelectedListener
使用方法:
例項化NavigationView後,之後直接呼叫這個方法,就像如下程式碼
例項化的NavigationView控制元件.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.title1:
Toast.makeText(Main2Activity.this, "第一個", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});
這樣就加入點選事件了,switch中對應著加入點選事件