Android开发实现抽屉菜单
本⽂实例为⼤家分享了Android开发实现抽屉菜单的具体代码,供⼤家参考,具体内容如下
实现效果
点击菜单图表即可进⼊抽屉
代码实现
1、打开adle⽂件,在dependencies闭包中添加如下内容:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:24.2.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
}
2、进⼊想要添加抽屉的界⾯的layout布局
添加DrawerLayout控件
⾸先DrawerLayout是⼀个布局,在布局中允许放⼊两个直接⼦控件,第⼀个⼦控件是主屏幕中的内容,第⼆个空间是滑动菜单中显⽰的内容
原本的界⾯所有布局内容就放在第⼀个⼦控件中
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
xmlns:tools="schemas.android/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bk_1"
tools:context="aphserviceping.MainActivity">
<!-- 内容区 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/setting"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_marginLeft="8dp"
android:background="@drawable/ic_baseline_menu1"
/>
<!--    android:background="@drawable/ic_baseline_menu_24"-->
<!--原图标宽⾼ 40 52-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="180dp"
android:id="@+id/graphServicePing"
android:gravity="center"
android:text="Graph Service Ping"
android:textColor="#26C6DA"
android:textSize="36dp"/>
<LinearLayout
android:layout_marginTop="32dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/bloder"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:paddingHorizontal="4dp">
<!--        android:paddingHorizontal="16dp"-->
<!--            android:layout_height="wrap_content"-->
<Button
android:minHeight="50dp"
android:id="@+id/btn_input"
android:layout_width="0dp"
android:layout_weight="8"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_marginLeft="8dp"
android:background="@null"
/>
<Button
android:id="@+id/btn_ping"
android:background="@null"
android:layout_weight="4"
android:text="Ping!"
android:textColor="#262626"
android:textSize="25sp"
android:layout_width="0dp"
android:layout_height="80dp"
/>
<!--                android:layout_weight="2"-->
<!--            android:layout_width="50dp"-->
<!--            android:layout_height="50dp"-->
</LinearLayout>
</LinearLayout>
&le.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:background="@mipmap/bk_1"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_gravity="start"
app:menu="@menu/nav_menu">
</le.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
android:layout_gravity="start"这⼀句很重要,⼀定要加上
3.NavigationView⽤来优化滑动菜单页⾯的
menu⽤来在NavigationView中显⽰具体的菜单项,headerLayout则⽤来在NavigationView中显⽰头布局(这⾥我只⽤到了menu,所以我只写menu)
在res下如果没有menu⽬录,可以新建⼀个menu⽂件夹,然后右键menu->new_menu resource file
menu代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="schemas.android/apk/res/android">
<item
android:id="@+id/nav_setting"
android:icon="@drawable/ic_launcher_setting_foreground"
android:title="设置">
</item>
</menu>
可以添加多个item,不要忘了引⽤menu
app:menu="@menu/nav_menu"android layout布局
4.设置主界⾯菜单图表的点击事件
跟intent不同
setting.setOnClickListener(new View.OnClickListener() {  //设置点击事件
@Override
public void onClick(View v) {
mDrawerLayout.openDrawer(GravityCompat.START);
}
});
5、设置抽屉菜单item点击事件
DrawerLayout mDrawerLayout;
mDrawerLayout=findViewById(R.id.drawerLayout);
NavigationView navView=(NavigationView)findViewById(R.id.nav_view);
navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){            @Override
public boolean onNavigationItemSelected(MenuItem item) {
ItemId()){
case R.id.nav_setting:
startActivity(new Intent(MainActivity.this, Setting.class));
break;
}
mDrawerLayout.closeDrawers();
return false;
}
});
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。