日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

toolbar + DrawerLayout 实现抽屉菜单

發(fā)布時間:2023/12/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 toolbar + DrawerLayout 实现抽屉菜单 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

編寫公共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) ... ...

默認使用系統(tǒng)toggle 監(jiān)聽,控制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監(jiān)聽和控制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>("關(guān)于", "下載升級")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 = "國家電網(wǎng)山東省供電公司"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, "關(guān)于本app版本,以及升級!", Toast.LENGTH_SHORT).show()slide_menu.onItemClickListener =OnItemClickListener { parent, view, position, id ->if(position == 0){Toast.makeText(this, "關(guān)于菜單!", 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 設(shè)置如下???android:theme="@style/Theme.AppCompat.Light.NoActionBar"

<activity android:name=".MainActivity"android:theme="@style/Theme.AppCompat.Light.NoActionBar"android:screenOrientation="landscape"/>

不然使用setSupportActionBar(toolbar) 會異常!

?

?

?

總結(jié)

以上是生活随笔為你收集整理的toolbar + DrawerLayout 实现抽屉菜单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。