Android側(cè)滑菜單控件DrawerLayout使用詳解
DrawerLayout是Android V4包下一個帶有側(cè)滑功能的布局控件,可以根據(jù)手勢展開與隱藏側(cè)邊欄,也可以隨著側(cè)邊欄的點擊改變主界面區(qū)的內(nèi)容。并且只需要按照DrawerLayout規(guī)定的布局格式進行布局,即可實現(xiàn)左右側(cè)滑效果。
一、約定的抽屜布局
DrawerLayout的布局一般分為三個部分:第一部分為主界面內(nèi)容布局,第二部分為左邊側(cè)滑界面布局,第三部分為右邊側(cè)滑界面布局。那么系統(tǒng)是怎么區(qū)分左邊側(cè)滑和右邊側(cè)滑的代碼塊的呢?請注意DrawerLayout布局中側(cè)滑部分的代碼塊必須指定android:layout_gravity屬性,layout_gravity="start/left"代表左邊側(cè)滑,layout_gravity="end/right"代表右邊側(cè)滑。在官方文檔中推薦DrawerLayout最好作為界面的根布局,否則可能會出現(xiàn)觸摸事件被屏蔽的問題。DrawerLayout中主內(nèi)容區(qū)的布局要放到最頂層,接著放置左邊側(cè)滑界面布局,最后放置右邊側(cè)滑界面布局。類似布局如下:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.administer.drawlayoutdemo.MainActivity">
<RelativeLayout
android:id="@+id/relativelayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/left_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="開啟左邊菜單欄" />
<Button
android:id="@+id/right_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="開啟右邊菜單欄"
android:layout_alignParentRight="true"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/left"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#f00">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="左邊布局" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/right"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:background="#00f">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="右邊布局" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
二、DrawerLayout的監(jiān)聽
DrawerLayout的監(jiān)聽器有三種。DrawerLayout添加監(jiān)聽器的方法為drawerLayout.addDrawerListener(),由于DrawerLayout側(cè)滑菜單的展開與隱藏均可以被監(jiān)聽,這樣我們就可以在側(cè)滑菜單展開與隱藏發(fā)生的時刻做一些希望做的事情。(Ps:drawerLayout.setDrawerListener()已過時,不過仍可使用,與drawerLayout.addDrawerListener()用途一樣)
1、使用DrawerListener監(jiān)聽
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
/**
* 抽屜滑動時,調(diào)用此方法
* */
}
@Override
public void onDrawerOpened(View drawerView) {
/**
* 抽屜被完全展開時,調(diào)用此方法
* */
}
@Override
public void onDrawerClosed(View drawerView) {
/**
* 抽屜被完全關閉時,調(diào)用此方法
* */
}
@Override
public void onDrawerStateChanged(int newState) {
/**
* 抽屜狀態(tài)改變時,調(diào)用此方法
* */
}
});
2、使用SimpleDrawerListener監(jiān)聽
顧名思義,即是DrawerListener的精簡版,不必實現(xiàn)DrawerListener的全部回調(diào)函數(shù),可以根據(jù)業(yè)務需求選擇重寫相應的方法,用法與DrawerListener一致。
3、配合ActionBar使用的ActionBarDrawerToggle監(jiān)聽
如果Activity中有ActionBar,最好使用ActionBarDrawerToggle進行監(jiān)聽,ActionBarDrawerToggle實現(xiàn)了DrawerListener,它可以做DrawerListener能做的所有事情,不過使用ActionBarDrawerToggle監(jiān)聽,需要選擇重寫的方法。
(補充:1、DrawerLayout.openDrawer()和DrawerLayout.closeDrawer()可以打開和關閉側(cè)邊欄。 2、如果側(cè)滑欄的點擊事件穿透到主界面,在該側(cè)滑欄的布局文件的最外層加上 android:clickable="true")
三、不足(亦或是優(yōu)點?)
和一般的側(cè)滑菜單相比,DrawerLayout的側(cè)滑效果會浮現(xiàn)在主界面的上方,而不像其他側(cè)滑菜單,不會遮擋主界面。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android實現(xiàn)右邊抽屜Drawerlayout效果
- Android側(cè)滑菜單之DrawerLayout用法詳解
- Android DrawerLayout實現(xiàn)側(cè)拉菜單功能
- Android使用DrawerLayout實現(xiàn)仿QQ雙向側(cè)滑菜單
- Android App中DrawerLayout抽屜效果的菜單編寫實例
- Android中DrawerLayout+ViewPager滑動沖突的解決方法
- Android原生側(cè)滑控件DrawerLayout使用方法詳解
- Android組件之DrawerLayout實現(xiàn)抽屜菜單
- Android中DrawerLayout實現(xiàn)側(cè)滑菜單效果
- Android抽屜布局DrawerLayout的簡單使用
相關文章
Android原生態(tài)實現(xiàn)分享轉(zhuǎn)發(fā)功能實例
大家好,本篇文章主要講的是Android原生態(tài)實現(xiàn)分享轉(zhuǎn)發(fā)功能實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下2021-12-12
關于Android高德地圖的簡單開發(fā)實例代碼(DEMO)
高德地圖在日常生活中經(jīng)常會用到,那么基于代碼如何實現(xiàn)高德地圖呢?下面小編給大家分享一個demo幫助大家學習android高德地圖的簡單開發(fā),需要的朋友參考下2016-11-11
Android實現(xiàn)個人資料頁面頭像背景模糊顯示包(狀態(tài)欄)
這篇文章主要介紹了Android實現(xiàn)個人資料頁面頭像背景模糊顯示包括狀態(tài)欄,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
Android開發(fā)實現(xiàn)的簡單媒體播放器功能示例
這篇文章主要介紹了Android開發(fā)實現(xiàn)的簡單媒體播放器功能,結(jié)合實例形式分析了Android基于surfaceview實現(xiàn)多媒體視頻及音頻播放的相關操作技巧,需要的朋友可以參考下2017-10-10
Android Studio開發(fā)中Gradle各種常見報錯問題解決方案
這篇文章主要為大家介紹了Android Studio開發(fā)中Gradle各種常見報錯問題解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
Android 獲取屏幕高度,標題高度,狀態(tài)欄高度(實例代碼)
getWindow().findViewById(Window.ID_ANDROID_CONTENT)這個方法獲取到的view就是程序不包括標題欄的部分,然后就可以知道標題欄的高度了2013-11-11

