toolbar + DrawerLayout 实现抽屉菜单
生活随笔
收集整理的這篇文章主要介紹了
toolbar + DrawerLayout 实现抽屉菜单
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫公共toolbar+DrawerLayout?布局文件:
<?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"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/colorBase"android:minHeight="?attr/actionBarSize"android:theme="?attr/actionBarTheme"></androidx.appcompat.widget.Toolbar><androidx.drawerlayout.widget.DrawerLayoutandroid:id="@+id/drawer"android:layout_width="220dp"android:layout_height="match_parent"android:layout_gravity="right"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:divider="@color/colorWhite"android:dividerHeight="3dp"android:id="@+id/slide_menu"/></LinearLayout></androidx.drawerlayout.widget.DrawerLayout> </LinearLayout>在activity 代碼中添加:
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.menu_realtime_data)initView()setSupportActionBar(toolbar)/*顯示Home圖標*/supportActionBar?.setDisplayHomeAsUpEnabled(true)toolbar.subtitle = "test"var toggle = ActionBarDrawerToggle(this, drawer, toolbar, 0, 0)toggle.syncState()drawer.addDrawerListener(toggle)drawer.setScrimColor(0x70bbbbbb) ... ...默認使用系統toggle 監聽,控制drawerlayout的彈出,回收。
如果居右邊抽屜滑出:
<?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"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/colorBase"android:minHeight="?attr/actionBarSize"android:theme="?attr/actionBarTheme"app:navigationIcon="@drawable/back"><ImageView android:id="@+id/menu_btn"android:contentDescription="返回"android:layout_marginTop="1dp"android:layout_width="35dp"android:layout_height="35dp"android:paddingRight="5dp"android:layout_gravity="right"android:src="@drawable/menu_slide"/></androidx.appcompat.widget.Toolbar><androidx.drawerlayout.widget.DrawerLayoutandroid:id="@+id/drawer"android:layout_width="220dp"android:layout_height="match_parent"android:layout_gravity="right"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="vertical"android:layout_gravity="right"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:divider="@color/colorWhite"android:dividerHeight="3dp"android:id="@+id/slide_menu"/></LinearLayout></androidx.drawerlayout.widget.DrawerLayout> </LinearLayout>那么就不能使用toggle,需要自己定義button監聽和控制DrawerLayout
package com.daobo.wand.childmenuimport android.graphics.Color import android.os.Bundle import android.view.Gravity import android.view.View import android.widget.AdapterView import android.widget.AdapterView.OnItemClickListener import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.daobo.wand.R import androidx.appcompat.app.ActionBarDrawerToggle import androidx.drawerlayout.widget.DrawerLayout import com.daobo.wand.BR import com.daobo.wand.adapter.ListAdapterimport kotlinx.android.synthetic.main.app_bar.*class AboutActivity : AppCompatActivity(), View.OnClickListener {val listMenuText = listOf<String>("關于", "下載升級")private var drawerOpenFlag : Boolean = falseoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.menu_about)setSupportActionBar(toolbar)/*顯示Home圖標*/supportActionBar?.setDisplayHomeAsUpEnabled(true)toolbar.subtitle = "國家電網山東省供電公司"toolbar.setNavigationOnClickListener {finish()}drawer.setDrawerListener(object : DrawerLayout.DrawerListener {override fun onDrawerStateChanged(arg0: Int) {}override fun onDrawerSlide(arg0: View, arg1: Float) {}override fun onDrawerOpened(arg0: View) {drawerOpenFlag = true}override fun onDrawerClosed(arg0: View) {drawerOpenFlag= false}})drawer.setScrimColor(0x70bbbbbb)var adapter = ListAdapter<String>(this, listMenuText,R.layout.tab_item_simple, BR.name)slide_menu.adapter = adapterToast.makeText(this, "關于本app版本,以及升級!", Toast.LENGTH_SHORT).show()slide_menu.onItemClickListener =OnItemClickListener { parent, view, position, id ->if(position == 0){Toast.makeText(this, "關于菜單!", Toast.LENGTH_SHORT).show()}else{Toast.makeText(this, "下載升級!", Toast.LENGTH_SHORT).show()}}menu_btn.setOnClickListener(this)}override fun onClick(v: View?) {//TODO("not implemented")// To change body of created functions use File | Settings | File Templates.when(v?.id) {R.id.menu_btn ->{//點擊了if(!drawerOpenFlag) {drawer.openDrawer(Gravity.RIGHT)} else{drawer.closeDrawer(Gravity.RIGHT)}}}} }注意別忘了在manifest文件中,將activity 設置如下???android:theme="@style/Theme.AppCompat.Light.NoActionBar"
<activity android:name=".MainActivity"android:theme="@style/Theme.AppCompat.Light.NoActionBar"android:screenOrientation="landscape"/>不然使用setSupportActionBar(toolbar) 會異常!
?
?
?
總結
以上是生活随笔為你收集整理的toolbar + DrawerLayout 实现抽屉菜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑与家园黑市在哪里
- 下一篇: 交换机接口类型有哪些?(PythonAV