View—drawerLayout學習

uion發表於2017-11-23

drawerLayout是什麼

drawerLayout是一個佈局控制元件,跟LinearLayout等控制元件是一樣;drawerLayout具有滑動的功能,一般用來實現側滑選單

怎麼用

  1. 和其他佈局一樣,但是需要作為根佈局使用
  2. 寬高必須是 match_parent
  3. 第一個子佈局作為主頁面佈局內容
  4. 第二個子佈局作為側滑選單的佈局

一:佈局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name3"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_gravity="start"
    android:background="@color/colorWhite">

    <TextView
        android:id="@+id/drawer_menu1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="@string/app_name"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="@string/app_name1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="@string/app_name2"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>複製程式碼

事件監聽

通過 addDrawerListener 來新增監聽事件,監聽側滑的開啟或者關閉

DrawerListener的可選項有

  1. DrawerLayout.DrawerListener
  2. ActionBarDrawerToggle—能做DrawerListener 的所有事情,同時能將drawerLayout的展開和隱藏與actionbar的app 圖示關聯起來
  3. DrawerListener的子類SimpleDrawerListener—這個類的時候不必實現全部的回撥函式,根據自己的需要重寫即可
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {

    }

    @Override
    public void onDrawerOpened(View drawerView) {

    }

    @Override
    public void onDrawerClosed(View drawerView) {

    }

    @Override
    public void onDrawerStateChanged(int newState) {

    }
});複製程式碼

要點

主內容佈局

  1. 寬度和高度必須都是match_parent**
  2. 不能使用layout_gravity屬性

側滑佈局

  1. 必須使用 layout_gravity 屬性,可選項 left 、right 或者 start、end

參考

www.jcodecraeer.com/a/anzhuokai…

www.jianshu.com/p/65f268f01…

相關文章