Android Studio Navigation

本文介绍了Android Studio中Navigation组件的使用,包括依赖导入、添加头布局、创建Menu文件以设置列表项的标题和图标,并在Activity中获取头布局控件及设置列表监听。详细步骤涵盖从布局到代码的实现过程。

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

Navigation

##Navigation:列表组件
用法:导依赖
添加头布局:headerlayout:“头布局文件”
添加列表:新建Menu文件
设置title;
设置icon;
这些放在group里面
布局中添加列表:Menu=“列表文件”

Activity中:
getHeaderView(布局id)/findbyid();获得头文件的控件
setNavigationLinstener():列表布局的监听

代码

布局文件

<android.support.v4.widget.DrawerLayout
        android:id="@+id/main_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.design.widget.NavigationView
            android:id="@+id/main_navi"
            android:layout_width="400dp"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            app:menu="@menu/navimenu"
            app:headerLayout="@layout/headerview"
            ></android.support.design.widget.NavigationView>

       <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent">
          <android.support.v7.widget.RecyclerView
              android:id="@+id/main_list"
              android:layout_width="match_parent"
              android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
       </LinearLayout>
    </android.support.v4.widget.DrawerLayout>

menu文件

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/group" android:checkableBehavior="none">
    <item android:id="@+id/item1" android:title="Toolbar" android:icon="@drawable/qb"/>
    <item android:id="@+id/item2" android:title="GradView" android:icon="@drawable/sc"/>
    <item android:id="@+id/item3" android:title="Pattele" android:icon="@drawable/wjj"/>
    <item android:id="@+id/item4" android:title="仿稀土" android:icon="@drawable/xht"/>
    <item android:id="@+id/item5" android:title="主体style" android:icon="@drawable/cx"/>
    <item android:id="@+id/item6" android:title="模式切换" android:icon="@drawable/qb"/>
</group>
</menu>

activity文件

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar=findViewById(R.id.main_tool);
        drawerLayout=findViewById(R.id.main_drawer);
        navigationView=findViewById(R.id.main_navig);


        setSupportActionBar(toolbar);//让他来替换actionbar

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


        //绑定Toolbar和drawerLayout
        ActionBarDrawerToggle toggle=new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.open,R.string.close);
        toggle.syncState();
        drawerLayout.addDrawerListener(toggle);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu,menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id){
            case R.id.menu1:
                Toast.makeText(MainActivity.this,"你点击了菜单一",Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu1_1:
                Toast.makeText(MainActivity.this,"你点击了子菜单一",Toast.LENGTH_SHORT).show();
                if(drawerLayout.isDrawerOpen(Gravity.LEFT)){
                    drawerLayout.closeDrawer(Gravity.LEFT);
                }else{
                    drawerLayout.openDrawer(Gravity.LEFT);
                }
                break;
            case R.id.menu1_2:
                Toast.makeText(MainActivity.this,"你点击了子菜单二",Toast.LENGTH_SHORT).show();
                if(drawerLayout.isDrawerOpen(Gravity.LEFT)){
                    drawerLayout.closeDrawer(Gravity.LEFT);
                }else{
                    drawerLayout.openDrawer(Gravity.LEFT);
                }
                break;
            case R.id.menu1_3:
                if(drawerLayout.isDrawerOpen(Gravity.LEFT)){
                    drawerLayout.closeDrawer(Gravity.LEFT);
                }else{
                    drawerLayout.openDrawer(Gravity.LEFT);
                }
                Toast.makeText(MainActivity.this,"你点击了子菜单三",Toast.LENGTH_SHORT).show();
                break;

        }

        return super.onOptionsItemSelected(item);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值