NavigationView(導航視圖)有兩個部分,頭部可以加載一個layout,菜單欄可以加載一個menu文件。一般放在DrawerLayout中使用。NavigationView是Design Support庫提供中,先要添加依賴庫。
compile 'com.android.support:design:24.2.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
這裏添加了兩個依賴庫,第一個是Design Support庫,第二個是開源控件,用來將圖片圓形化顯示;
接下來編寫一個menu文件和一個頭部佈局文件,用來加載給NavigationView的頭部和菜單欄。
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/call"
android:icon="@drawable/nav_call"
android:title="電話"
/>
<item
android:id="@+id/friends"
android:icon="@drawable/nav_friends"
android:title="好友"
/>
<item
android:id="@+id/location"
android:icon="@drawable/nav_location"
android:title="位置"
/>
<item
android:id="@+id/mail"
android:icon="@drawable/nav_mail"
android:title="郵件"
/>
</group>
</menu>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="180dp"
android:background="?attr/colorPrimary"
android:padding="10dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circleImageView"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="33dp"
android:src="@drawable/mn" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/circleImageView"
android:layout_centerHorizontal="true"
android:layout_marginTop="13dp"
android:text="我在等待,一個有你的未來!"
android:textColor="#fff"
android:textSize="12sp" />
</RelativeLayout>
menu文件中先編寫一個組,並且設置組只能單選。在layout文件中放置了一個CircleImageView(將圖片修飾成圓形)和一個TextView。
在主佈局文件中添加NavigationView控件:
<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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.navigtionviewtest1.MainActivity">
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:headerLayout="@layout/nav_header"
app:menu="@menu/nav_menu"></android.support.design.widget.NavigationView>
</RelativeLayout>
app:headerLayout=”@layout/nav_header” 加載頭部視圖
app:menu=”@menu/nav_menu”加載菜單選項
注意xmlns:app=”http://schemas.android.com/apk/res-auto”添加了一個新的命名空間
接下來代碼中編寫邏輯事件:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setCheckedItem(R.id.call);//設置默認選中項
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
//設置點擊事件
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Toast.makeText(MainActivity.this, "" + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
}
}