側滑欄簡單實現

1.NavigationView是什麼

咱們作抽屜菜單的時候,左邊滑出來的那一部分的佈局都是由咱們本身來定義的,本身寫的話,花點時間也能作出來好看的側拉菜單,但老是要耗費時間,因而Google在5.0以後推出了NavitationView,就是咱們左邊滑出來的那個菜單。這個菜單總體上分爲兩部分,上面一部分叫作HeaderLayout,下面的那些點擊項都是menu,這樣的效果若是咱們要本身寫確定也能寫出來,可是沒有必要,既然Google提供了這個控件,那咱們就來看看這個控件要怎麼用吧。android

首先全部的東西都放在一個DrawerLayout中app

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_home"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.iblood.ui.HomeActivity">

    <!--主佈局-->
    <include layout="@layout/layout_zhu"/>

    <!--側滑佈局-->
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity = "left"
        app:headerLayout="@layout/cehua_head"
        app:menu="@menu/menu">
        <Button
            android:text="申請成爲寄養家庭"
            android:background="#e59707"
            android:paddingLeft="40px"
            android:paddingRight="40px"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

首先,根佈局就是DrawerLayout,在根佈局以後又主要分爲三大塊,第一塊就是咱們主界面的內容,第二塊是左邊拉出來的佈局,第三塊是右邊拉出來的佈局(不須要右邊側拉就不用寫,這樣的話整個佈局就只分爲兩大塊),那麼系統怎麼知道咱們這個佈局是主佈局仍是側拉菜單的佈局?請注意左邊側拉菜單佈局android:layout_gravity="left"這個屬性和右邊菜單佈局的android:layout_gravity="right"這個屬性,哈哈,這下應該明白了吧,系統經過layout_gravity屬性的值來判斷這個佈局是左邊菜單的佈局仍是右邊菜單的佈局,若是沒有這個屬性,那不用說,確定是主界面的佈局。ide

app:headerLayout="@layout/header_layout"表示引用一個頭佈局文件佈局

app:menu="@menu/main"表示引用一個menu做爲下面的點擊項ui

Button 是下面的一個切換按鈕this

頭佈局文件spa

<?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:layout_margin="20px"
    android:id="@+id/cehua_tou"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/iv"
        android:layout_margin="10px"
        android:layout_gravity="center"
        android:layout_width="80px"
        android:layout_height="80px"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_launcher"/>
    <LinearLayout
        android:orientation="vertical"
        android:layout_gravity="center"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content">

        <TextView
            android:text="aaa"
            android:id="@+id/cehua_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:text="aaa"
            android:id="@+id/cehua_dianhua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
    <ImageView
        android:src="@drawable/enter"
        android:layout_width="30px"
        android:layout_height="30px"
        android:layout_gravity="center"/>

</LinearLayout>

menu文件xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <group android:id="@+id/a" >
        <item
            android:id="@+id/cehua_xiaoxi"
            android:icon="@drawable/messages"
            android:title="消息"/>
        <item
            android:id="@+id/cehua_chongwu"
            android:icon="@drawable/pet"
            android:title="寵物"/>
    </group>
    <group android:id="@+id/b">
        <item
            android:id="@+id/cehua_dingdan"
            android:icon="@drawable/order_details"
            android:title="訂單"/>
        <item
            android:id="@+id/cehua_qianbao"
            android:icon="@drawable/collection_account"
            android:title="錢包"/>
        <item
            android:id="@+id/cehua_xuzhi"
            android:icon="@drawable/about"
            android:title="須知"/>
    </group>
    <group android:id="@+id/c">
        <item
            android:id="@+id/cehua_shezhi"
            android:icon="@drawable/setting"
            android:title="設置"/>

    </group>
    <group android:id="@+id/d">
        <item
            android:title=""/>
    </group>
</menu>

在佈局文件中添加app:itemIconTint="@color/blue"屬性 改變背景顏色事件

代碼中navigationView.setItemIconTintList(null); 顯示本來顏色ip

其實不用<group>標籤也能夠,可是加上它在給個id的話會分隔item顯得逼格高一些

1.app:itemBackground="@color/colorAccent"設置每個item的背景顏色

2.app:itemTextColor=""設置item的背景顏色

頭佈局點擊事件

//側滑頭佈局
View headerView = navView.getHeaderView(0);
View cehua_tou = headerView.findViewById(R.id.cehua_tou);
cehua_tou.setOnClickListener(this);

item點擊事件

//側滑item點擊事件
navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        //容許條目點擊
        item.setCheckable(true);
        switch (item.getItemId()){
            case R.id.cehua_xiaoxi:
                Toast.makeText(HomeActivity.this, "11111111111111", Toast.LENGTH_SHORT).show();
                break;
            case R.id.cehua_chongwu:
                Toast.makeText(HomeActivity.this, "22222222222222", Toast.LENGTH_SHORT).show();
                break;
        }
        return false;
    }
});
相關文章
相關標籤/搜索