Android入門教程 | DrawerLayout 側滑欄
DrawerLayout 是實現了側滑選單效果的控制元件。
DawerLayout 分為側邊選單和主內容區兩部分:
- 主內容區要放在側邊選單前面,還有就是主內容區最好以 DrawerLayout 最好為介面的根佈局,否則可能會出現觸控事件被遮蔽的問題。
- 側滑選單部分的佈局必須設定 layout_gravity 屬性,表示側滑選單是在左邊還是右邊,設定了 layout_gravity="start/left" 的檢視才會被認為是側滑選單。
使用的注意事項
- 主內容檢視一定要是 DrawerLayout 的第一個子檢視
- 主內容檢視寬度和高度需要 match_parent
- 必須顯示指定側滑檢視的 android:layout_gravity 屬性 android:layout_gravity = "start" 時,從左向右滑出選單 android:layout_gravity = "end"時,從右向左滑出選單 不推薦使用left和right!!!
- 側滑檢視的寬度以dp為單位,不建議超過320dp(為了總能看到一些主內容檢視)
設定側滑事件:mDrawerLayout.setDrawerListener(DrawerLayout.DrawerListene
DrawerLayout 示例:
要使用 DrawerLayout,可以在 layout xml 檔案中將 DrawerLayout 設定為根檢視。
從左邊滑出的抽屜檢視(側滑欄)
一個簡單的從左邊滑出側滑欄的例子。
側滑欄滑出後,後面的檢視會有個陰影。
layout 檔案
<?xml version="1.0" encoding="utf-8"?><androidx.drawerlayout.widget.DrawerLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:openDrawer="start"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="我是主頁" /> </RelativeLayout> <RelativeLayout android:layout_width="250dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#ffffff"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="我是側滑欄" /> </RelativeLayout></androidx.drawerlayout.widget.DrawerLayout>
效果:
需要注意的是,DrawerLayout 要設定
tools:openDrawer="start"
;而且側滑欄layout要設定
android:layout_gravity="start"
。
如果改成
tools:openDrawer="end"
,側滑欄 layout 要設定
android:layout_gravity="end"
。側滑欄可以從右邊滑出。
現在側邊欄放的是RelativeLayout。 也可以放一個RecyclerView。
抽屜出來時推動頁面
監聽側滑欄的滑動事件,使用
ActionBarDrawerToggle
。側滑欄滑出時,在
onDrawerSlide
方法中計算出滑動的距離。 然後主檢視設定水平相對偏移距離
setTranslationX
即可。
可在activity的onCreate方法執行配置操作
DrawerLayout root = findViewById(R.id.root); final View contentView = findViewById(R.id.content_field); ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, root, android.R.string.yes, android.R.string.cancel) { @Override public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); float slideX = drawerView.getWidth() * slideOffset; contentView.setTranslationX(slideX); } }; root.addDrawerListener(actionBarDrawerToggle);
改變滑出時的陰影
使用 DrawerLayout 的
setScrimColor
方法,改變陰影顏色。預設的陰影顏色是
DEFAULT_SCRIM_COLOR = 0x99000000
。
DrawerLayout root = findViewById(R.id.root); root.setScrimColor(Color.TRANSPARENT);
鎖定 DrawerLayout
root.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); // 解鎖 root.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); // 不檢測從左到右的滑動動作
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008155/viewspace-2840671/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android側滑選單DrawerLayout使用Android
- 直播軟體搭建,通過Android DrawerLayout實現側邊欄功能Android
- 利用DrawerLayout實現側滑選單學習總結
- MaterialDesgin系列文章(二)NavigationView和DrawerLayout實現側滑功能NavigationView
- MaterialDesign系列文章(二)NavigationView和DrawerLayout實現側滑功能NavigationView
- 短視訊平臺開發,依靠DrawerLayout實現側滑選單效果
- 微信小程式『側邊欄滑動』特效微信小程式特效
- Android最簡單的側劃選單,DrawerLayout的使用Android
- Android側滑(右滑、下拉)返回控制元件 - SwipeBackLayoutAndroid控制元件
- Android入門教程 | RecyclerView使用入門AndroidView
- Flutter 側滑欄及城市選擇UI的實現FlutterUI
- 原生Android 側滑選單實踐(部分)Android
- Android自定義View(四)側滑佈局AndroidView
- android的左右側滑選單實現Android
- 帶有視覺滾動差的選單側滑欄視覺
- Android入門教程 | Kotlin協程入門AndroidKotlin
- iOS 如何絲滑的側滑返回iOS
- Realm for Android快速入門教程Android
- Android SQLite快速入門教程AndroidSQLite
- kotlin語言:解決drawerLayout與viewpager的衝突、NavigationView側滑裡面menu的點選事件KotlinViewpagerNavigation事件
- mui關閉側滑UI
- 【Android開發入門教程】三.Activity入門指南!Android
- Android側滑返回分析和實現(不高仿微信)Android
- Android SlidingMenu側滑選單使用介紹Android
- (有圖)仿QQ側滑選單:RecyclerView側滑選單,長按拖拽,滑動刪除View
- 自定義ViewGroup,實現Android的側滑選單ViewAndroid
- Android 介面滑動卡頓分析與解決方案(入門)Android
- iOS UITableView側滑刪除iOSUIView
- Swift一款絲滑的側滑返回Swift
- Android入門教程 | EditText 使用者輸入Android
- Android入門教程 | SharedPreferences 簡介Android
- Android入門教程 | 多執行緒Android執行緒
- Android入門教程 | AsyncTask 使用介紹Android
- Android入門教程 | RecyclerView實際使用AndroidView
- Android入門教程 | Fragment 基礎概念AndroidFragment
- Android入門教程 | DialogFragment 的使用AndroidFragment
- C#快速入門教程(5)——欄位與屬性C#
- 《iPhone側滑不相容-mui》iPhoneUI