Android之側(cè)滑菜單DrawerLayout的使用介紹
在android support.v4 中有一個(gè)抽屜視圖控件DrawerLayout。使用這個(gè)控件,可以生成通過在屏幕上水平滑動(dòng)打開或者關(guān)閉菜單,能給用戶一個(gè)不錯(cuò)的體驗(yàn)效果。
DrawerLayout分為側(cè)邊菜單和主內(nèi)容區(qū)兩部分,側(cè)邊菜單可以根據(jù)手勢(shì)展開與隱藏,主內(nèi)容區(qū)的部分可以隨著菜單的點(diǎn)擊而變化。DrawerLayout其實(shí)是一個(gè)控件,跟LinearLayout差不多,直接使用即可。
DrawerLayout屬性
1、drawerPosition:指定 drawer 將從屏幕的一側(cè)滑動(dòng)。
2、drawerWidth :指定 drawer 的寬度,即從窗口的邊緣拉到視圖更精確的寬度。
3、keyboardDismissMode :確定鍵盤是否響應(yīng)拖動(dòng)被駁回。
- 'none' (默認(rèn)值), 拖動(dòng)不影響鍵盤。
- 'on-drag', 拖動(dòng)開始,鍵盤被駁回。
4、onDrawerClose :導(dǎo)航視圖關(guān)閉時(shí)調(diào)用函數(shù)。
5、onDrawerOpen :導(dǎo)航視圖打開時(shí)調(diào)用函數(shù)。
6、onDrawerSlide :與導(dǎo)航視圖交互時(shí)調(diào)用函數(shù)。
7、onDrawerStateChanged :當(dāng) Drawer 狀態(tài)發(fā)生變化時(shí)調(diào)用函數(shù),drawer 有 3 種狀態(tài):
- idle -- 表示與導(dǎo)航視圖沒有交互
- dragging -- 表示目前有與導(dǎo)航視圖的交互
- settling -- 表示有與導(dǎo)航視圖的交互,并且導(dǎo)航視圖正在的關(guān)閉或打開。
8、renderNavigationView :導(dǎo)航圖將被渲染到屏幕的一側(cè),并且可以拉出。
案例
使用導(dǎo)入依賴庫
compile 'com.android.support:appcompat-v7:24.2.1'
布局文件
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/v4_drawerlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/v4_drawerlayout_frame" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/v4_text" android:textSize="22sp" android:textColor="@color/colorAccent" android:gravity="center" /> </FrameLayout> <ListView android:layout_width="200dp" android:layout_height="match_parent" android:layout_gravity="left" android:id="@+id/v4_listview" android:choiceMode="singleChoice" android:background="@android:color/white" /> </android.support.v4.widget.DrawerLayout>
Activity
public class DrawerActivity extends AppCompatActivity { private ListView listView; private DrawerLayout drawerLayout; private TextView textView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.drawer_activity); initView(); } private void initView() { listView=(ListView) findViewById(R.id.v4_listview); drawerLayout=(DrawerLayout) findViewById(R.id.v4_drawerlayout); textView=(TextView) findViewById(R.id.v4_text); initDate(); } private void initDate(){ final List<String> list = new ArrayList<String>(); list.add("網(wǎng)易"); list.add("騰訊"); list.add("新浪"); list.add("搜狐"); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { textView.setText(list.get(position)); showDrawerLayout(); } }); drawerLayout.openDrawer(Gravity.LEFT);//側(cè)滑打開 不設(shè)置則不會(huì)默認(rèn)打開 } private void showDrawerLayout() { if (!drawerLayout.isDrawerOpen(Gravity.LEFT)) { drawerLayout.openDrawer(Gravity.LEFT); } else { drawerLayout.closeDrawer(Gravity.LEFT); } } }
運(yùn)行效果如圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android使用DrawerLayout實(shí)現(xiàn)仿QQ雙向側(cè)滑菜單
- Android原生側(cè)滑控件DrawerLayout使用方法詳解
- Android官方的側(cè)滑控件DrawerLayout的示例代碼
- Android中DrawerLayout實(shí)現(xiàn)側(cè)滑菜單效果
- Android DrawerLayout帶有側(cè)滑功能的布局類(1)
- Android側(cè)滑菜單控件DrawerLayout使用詳解
- Android組件DrawerLayout仿網(wǎng)易新聞v4.4側(cè)滑菜單
- android側(cè)滑菜單控件DrawerLayout使用方法詳解
- Android使用DrawerLayout實(shí)現(xiàn)側(cè)滑菜單效果
- Android布局控件DrawerLayout實(shí)現(xiàn)完美側(cè)滑效果
相關(guān)文章
簡(jiǎn)單實(shí)現(xiàn)Android本地音樂播放器
這篇文章主要為大家詳細(xì)介紹了如何簡(jiǎn)單實(shí)現(xiàn)Android本地音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Android Studio 3.0上分析內(nèi)存泄漏的原因
本篇文章主要介紹了Android Studio 3.0上分析內(nèi)存泄漏的原因,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11Android 懸浮窗權(quán)限各機(jī)型各系統(tǒng)適配大全(總結(jié))
這篇文章主要介紹了Android 懸浮窗權(quán)限各機(jī)型各系統(tǒng)適配大全(總結(jié)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Android自定義ViewGroup實(shí)現(xiàn)彈性滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義ViewGroup實(shí)現(xiàn)彈性滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android開發(fā)歡迎頁點(diǎn)擊跳過倒計(jì)時(shí)進(jìn)入主頁
沒點(diǎn)擊跳過自然進(jìn)入主頁,點(diǎn)擊跳過之后立即進(jìn)入主頁,這個(gè)功能怎么實(shí)現(xiàn)呢,本文通過實(shí)例代碼給大家介紹Android開發(fā)歡迎頁點(diǎn)擊跳過倒計(jì)時(shí)進(jìn)入主頁,感興趣的朋友一起看看吧2023-12-12如何獲取Android設(shè)備掛載的所有存儲(chǔ)器
這篇文章主要為大家詳細(xì)介紹了如何獲取Android設(shè)備掛載的所有存儲(chǔ)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Android通過原生方式獲取經(jīng)緯度與城市信息的方法
這篇文章主要給大家介紹了關(guān)于Android通過原生方式獲取經(jīng)緯度與城市信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Android 實(shí)現(xiàn)背景圖和狀態(tài)欄融合方法
下面小編就為大家分享一篇Android 實(shí)現(xiàn)背景圖和狀態(tài)欄融合方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng)功能的示例代碼
這篇文章主要介紹了Android 自定義LineLayout實(shí)現(xiàn)滿屏任意拖動(dòng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Android自定義View實(shí)現(xiàn)帶數(shù)字的進(jìn)度條實(shí)例代碼
這篇文章主要介紹了Android自定義View實(shí)現(xiàn)帶數(shù)字的進(jìn)度條實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-03-03