滑动菜单
程序员文章站
2022-08-19 19:09:49
1,添加依赖2,使用依赖作为框架androidx.drawerlayout.widget.DrawerLayout3,1)创建主界面...
1,添加依赖
2,使用依赖作为框架
androidx.drawerlayout.widget.DrawerLayout
3,
1)创建主界面
<!--主菜单-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#9ADBFF"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="主界面"
tools:layout_editor_absoluteX="51dp"
tools:layout_editor_absoluteY="-16dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
2)创建左滑菜单,使用依赖:navigation.NavigationView
<!--左滑菜单-->
<com.google.android.material.navigation.NavigationView
android:id="@+id/nv_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
//左滑菜单需要的两个xml文件
app:menu="@menu/menu_nv"
app:headerLayout="@layout/layout_header"
android:layout_gravity="left"
/>
//menu_nv,是第一个文件,是左滑菜单的功能项
<item
android:id="@+id/item1"
android:icon="@drawable/ic_people"
android:title="联系人"/>
<item
android:id="@+id/item2"
android:icon="@drawable/ic_settings"
android:title="设置"/>
<item
android:id="@+id/item3"
android:icon="@drawable/ic_fastfood"
android:title="收付款"/>
<item
android:id="@+id/item4"
android:icon="@drawable/ic_arrow"
android:title="主题"/>
//layout_header,是第二个文件,是左滑菜单的头部
<ImageView
android:id="@+id/iv_header"
android:layout_width="150dp"
android:layout_height="150dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="50dp"
android:src="@drawable/aa"/>
<TextView
android:id="@+id/tv_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/iv_header"
android:text="登录"
android:gravity="center"
android:textSize="20sp"
android:layout_marginTop="20dp"/>
3,添加监听
1)对菜单功能项的监听:setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener())
nv_main.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.item1:
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.item2:
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.item3:
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
//用代码关闭滑页
//点击关闭滑动页面
dl_main.closeDrawer(Gravity.LEFT);
break;
case R.id.item4:
//点击跳出
startActivity(new Intent(MainActivity.this, HomeActivity.class));
break;
}
return false;
}
});
2)对抽屉的监听:addDrawerListener(new DrawerLayout.DrawerListener())
dl_main.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
Log.e("TAG", "抽屉正在滑动");
//主界面随着抽屉的打开移动
int right = drawerView.getRight();
cl_main.setX(right);
}
@Override
public void onDrawerOpened(@NonNull View drawerView) {
Log.e("TAG", "打开抽屉");
}
@Override
public void onDrawerClosed(@NonNull View drawerView) {
Log.e("TAG", "关闭抽屉");
}
@Override
public void onDrawerStateChanged(int newState) {
Log.e("TAG", "抽屉状态改变");
}
});
3)对头部的监听
//先获取头部的两个id,然后再点击进行监听
View headerView = nv_main.getHeaderView(0);
ImageView iv = headerView.findViewById(R.id.iv_header);
TextView tv = headerView.findViewById(R.id.tv_header);
//点击图片
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"别点我了",Toast.LENGTH_SHORT).show();
}
});
//点击登录
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"登录",Toast.LENGTH_SHORT).show();
}
});
//用代码滑动
//点击主页面
tv_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击主页面进入滑动页面
dl_main.openDrawer(Gravity.LEFT);
}
});
4,toolbar的设置
//logo
toolbar.setLogo(R.mipmap.ic_launcher);
//主标题
toolbar.setTitle("安卓");
//副标题
toolbar.setSubtitle("真狗");
//设置menu中的图片正常显示
nv_main.setItemIconTintList(null);
setSupportActionBar(toolbar);
//抽屉开关
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, dl_main, toolbar, R.string.app_name, R.string.app_name);
dl_main.addDrawerListener(toggle);
//滑动与toolbar同步状态
toggle.syncState();
标题透明度改变
先把左上角更改为Priject,然后打开app文件夹下的src,然后在src文件夹下创建values-21,把style.xml复制过去,然后添加
<item name="android:statusBarColor">#00ffffff</item>
00是透明度,后面是颜色
本文地址:https://blog.csdn.net/kc527347568/article/details/108876344
上一篇: 小米6再战两年?小米推5折换电池活动