ToolBar和NavigationView

本文详细介绍如何在Android应用中使用Toolbar和NavigationView组件,包括依赖引入、布局配置、菜单创建及Activity中的初始化过程,实现侧滑菜单和头部布局的个性化定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ToolBar和NavigationView

NavigationView 列表主键
用法:
1、到依赖:implementation ‘com.android.support:design:28.0.0’
2、android.support.design.widget.NavigationView
3、添加头布局 app:headerLayout="@layout/布局名"
4、新建menu文件

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item android:id="@+id/na1" android:icon="@android:drawable/ic_menu_manage"  android:title="我的超级会员"></item>        
    </group>
</menu>

5、添加menu布局:app:menu="@menu/navigation"

布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FFFF8800"
    app:logo="@mipmap/ic_launcher"
    app:title="标题"
    app:titleTextColor="@android:color/holo_orange_light"
    app:subtitle="副标题"
    app:subtitleTextColor="@android:color/holo_red_dark"
    app:navigationIcon="@android:drawable/sym_action_email"
    >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="100dp">
        <EditText
            android:id="@+id/ed1"
            android:hint="请输入要查询的内容"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableLeft="@android:drawable/ic_menu_search"
            />
    </LinearLayout>
</android.support.v7.widget.Toolbar>


<android.support.v4.widget.DrawerLayout
    android:id="@+id/d"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView

            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/na"
        android:layout_gravity="left"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:headerLayout="@layout/topname"
        app:menu="@menu/navigation"
        >
    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

</LinearLayout>

headerLayout布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
<ImageView
    android:id="@+id/iv1"
    android:background="@drawable/tu4"
    android:layout_width="match_parent"
    android:layout_height="200dp" />
</LinearLayout>

menu

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<group android:checkableBehavior="single">
    <item android:id="@+id/na1" android:icon="@android:drawable/ic_menu_manage"  android:title="我的超级会员"></item>
    <item android:id="@+id/na2" android:icon="@android:drawable/ic_menu_today" android:title="QQ钱包"></item>
    <item android:id="@+id/na3" android:icon="@android:drawable/ic_menu_add" android:title="个性装扮"></item>
    <item android:id="@+id/na4" android:icon="@android:drawable/ic_menu_agenda" android:title="我的收藏"></item>
</group>
</menu>

Activity

public class MainActivity extends AppCompatActivity {
Toolbar toolbar;
DrawerLayout drawerLayoutl;
NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setSupportActionBar(toolbar);//替换actiongbar
    inittoolbar();
    initdrawerLayoutl();

    navigationView = findViewById(R.id.na);
    ImageView imageView = navigationView.getHeaderView(0).findViewById(R.id.iv1);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "图片", Toast.LENGTH_SHORT).show();
        }
    });



}

//toolbar
public void inittoolbar(){
    toolbar = findViewById(R.id.toolbar);
    //导航按钮添加点击事件
     toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "导航", Toast.LENGTH_SHORT).show();
        }
    });
}

//drawerLayout
public void initdrawerLayoutl(){
    drawerLayoutl = findViewById(R.id.d);

    //绑定toolbar和drawerLayoutl
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawerLayoutl,toolbar,R.string.openlayout,R.string.closelayout);

    toggle.syncState();
    drawerLayoutl.addDrawerListener(toggle);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.layoutmenu,menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();

    switch (itemId){
        case R.id.item1:
            Toast.makeText(this, "菜单", Toast.LENGTH_SHORT).show();
            break;
        case R.id.submenu:
            Toast.makeText(this, "子菜单", Toast.LENGTH_SHORT).show();
            if (drawerLayoutl.isDrawerOpen(Gravity.LEFT)){
                drawerLayoutl.closeDrawer(Gravity.LEFT);
            }else{
                drawerLayoutl.openDrawer(Gravity.LEFT);
            }
            break;
    }

    return super.onOptionsItemSelected(item);
}
}

效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值