一手遮天 Android - view(导航类): ToolBar 基础

一手遮天 Android - view(导航类): ToolBar 基础,第1张

概述项目地址https://github.com/webabcd/AndroidDemo作者webabcd一手遮天Android-view(导航类):ToolBar基础示例如下:/viewavigation/ToolBarDemo1.java/***Toolbar-工具栏(导航栏)*本例用于演示Toolbar的基础知识,以及如何通过Toolbar右侧的按钮d出OptionM

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

一手遮天 AndroID - vIEw(导航类): Toolbar 基础示例如下:

/vIEw/navigation/ToolbarDemo1.java

/** * Toolbar - 工具栏(导航栏) * 本例用于演示 Toolbar 的基础知识,以及如何通过 Toolbar 右侧的按钮d出 OptionMenu 菜单,以及如何在 Toolbar 上显示 OptionMenu 菜单中的选项 * * 左侧按钮一般用于“返回键” *     这个左侧按钮我们称之为 navigation button * 右侧按钮一般用于d出 OptionMenu 菜单(通过点击设备的“menu”键也会d出 OptionMenu 菜单) *     这个右侧按钮以及在 Toolbar 上显示的 OptionMenu 菜单中的选项我们称之为 action menu * * 关于 OptionMenu 菜单的基础知识和样式修改可以参见 PopupMenu 的相关说明(请参见 vIEw/flyout/PopupMenuDemo1, vIEw/flyout/PopupMenuDemo2) * 注:如果觉得 OptionMenu 实现不了需求,就用 PopupWindow 吧 * * * 另:Toolbar 替代了 Actionbar */package com.webabcd.androIDdemo.vIEw.navigation;import androIDx.appcompat.app.AppCompatActivity;import androID.os.Bundle;import androIDx.appcompat.Widget.Toolbar;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.vIEw.VIEw;import androID.Widget.Toast;import com.webabcd.androIDdemo.R;public class ToolbarDemo1 extends AppCompatActivity {    private Toolbar mToolbar1;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_vIEw_navigation_toolbardemo1);        mToolbar1 = findVIEwByID(R.ID.toolbar1);        sample();    }    private voID sample() {        // 点击 navigationIcon(左侧按钮的图标)的回调        mToolbar1.setNavigationOnClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                Toast.makeText(ToolbarDemo1.this, "点击了左侧按钮", Toast.LENGTH_SHORT).show();            }        });        // 设置右侧用于d出 OptionMenu 的按钮的图标,不指定的话会使用默认图标        // 注:只有当 toolbar.getMenu() 有数据时,Toolbar 才会显示右侧的图标        mToolbar1.setoverflowIcon(getResources().getDrawable(R.drawable.img_sample_son, null));        // 从 xml 中加载 OptionMenu 的数据        mToolbar1.inflateMenu(R.menu.menu_vIEw_navigation_toolbardemo1);        // 上面通过 toolbar.inflateMenu() 加载的 OptionMenu 数据会被自动同步到 toolbar.getMenu() 中        // 只有当 toolbar.getMenu() 有数据时,Toolbar 才会显示右侧的图标        // 支持将 OptionMenu 中的选项显示在 Toolbar 上,即支持 MenuItem 的 icon 和 showAsAction(参见 res/menu/menu_vIEw_navigation_toolbardemo1.xml 中的说明)        final Menu menu = mToolbar1.getMenu();        // 可以在 java 中对 menu 做增删 *** 作,类似 PopupMenu(参见 vIEw/flyout/PopupMenuDemo1)        // OptionMenu 也支持显示多级菜单,类似 PopupMenu(参见 vIEw/flyout/PopupMenuDemo1)        // 不同于 PopupMenu 的是,Toolbar 的 OptionMenu 的 menuItem.setIcon(), menuItem.setShowAsAction() 是有效果的,即支持将 OptionMenu 中的选项显示在 Toolbar 上(参见 res/menu/menu_vIEw_navigation_toolbardemo1.xml 中的说明)        // MenuItem menuItem = menu.add("item");        // d出的 OptionMenu 中的选项被单击后的回调        mToolbar1.setonMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {            @OverrIDe            public boolean onMenuItemClick(MenuItem item) {                // item.getItemID() - 选项的 ID                // item.getTitle() - 选项的 Title                Toast.makeText(ToolbarDemo1.this, String.format("ID:%d, Title:%s", item.getItemID(), item.getTitle()), Toast.LENGTH_SHORT).show();                // 如果 item 数据来自 xml 的话,则可以通过此方式来判断用户点击的是哪个 item                if (item.getItemID() == menu.getItem(1).getItemID()) {                }                return true;            }        });    }    // 如果点击了设备的“menu”键,就会调用此方法来构造 OptionMenu 的数据    @OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.menu_vIEw_flyout_contextmenudemo1, menu);        return true;    }    // 点击了设备的“menu”键,d出 OptionMenu 后,其选项被单击后的回调    @OverrIDe    public boolean onoptionsItemSelected(MenuItem item) {        Toast.makeText(ToolbarDemo1.this, String.format("ID:%d, Title:%s", item.getItemID(), item.getTitle()), Toast.LENGTH_SHORT).show();        return true;    }}

/layout/activity_vIEw_navigation_toolbardemo1.xml

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical">    <!--        Toolbar - 工具栏(导航栏)            layout_height - 高度            background - 背景            navigationIcon - 左侧按钮的图标            logo - 显示在 navigationIcon 右边的图标            Title, TitleTextcolor, subTitle, subTitleTextcolor - 标题,标题颜色,副标题,副标题颜色            theme - 指定 Toolbar 的主题        注:本例中的 Toolbar 来自 androIDx 包,如果要使用自定义属性,则要引入 xmlns:app="http://schemas.androID.com/apk/res-auto"    -->    <androIDx.appcompat.Widget.Toolbar        androID:ID="@+ID/toolbar1"        androID:layout_wIDth="match_parent"        androID:layout_height="?attr/actionbarSize"        androID:background="@color/green"        app:navigationIcon="@drawable/img_sample_son"        app:logo="@mipmap/ic_launcher"        app:title="Title"        app:TitleTextcolor="@color/white"        app:subtitle="subTitle"        app:subTitleTextcolor="@color/white"        androID:theme="@style/Base.theme.AppCompat.light" /></linearLayout>

/menu/menu_vIEw_navigation_toolbardemo1.xml

<?xml version="1.0" enCoding="utf-8"?><!--    用于构造 OptionMenu 的选项数据,参见 vIEw/navigation/ToolbarDemo1.java    showAsAction - 在 Toolbar 上显示的逻辑        never - 永远不在 Toolbar 上显示,默认值        always - 总是在 Toolbar 上显示(默认只显示 icon 指定的图标)        ifRoom - 如果 Toolbar 上有地方则在 Toolbar 上显示(默认只显示 icon 指定的图标)--><menu xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto">    <item androID:ID="@+ID/item1" androID:title="菜单 1"        androID:icon="@drawable/ic_expand_less"        app:showAsAction="ifRoom" />    <item androID:ID="@+ID/item2" androID:title="菜单 2"        androID:icon="@drawable/ic_expand_more"        app:showAsAction="ifRoom" />    <item androID:ID="@+ID/item3" androID:title="菜单 3" />    <item androID:ID="@+ID/item4" androID:title="菜单 4" />    <item androID:ID="@+ID/item5" androID:title="菜单 5" /></menu>

/menu/menu_vIEw_flyout_contextmenudemo1.xml

<?xml version="1.0" enCoding="utf-8"?><!--    用于构造 ContextMenu 的选项数据,参见 vIEw/flyout/ContextMenuDemo1.java--><menu xmlns:androID="http://schemas.androID.com/apk/res/androID">    <item androID:ID="@+ID/menu0" androID:title="menu 0">        <menu>            <group>                <item androID:ID="@+ID/menu0_0" androID:title="menu 0_0"/>                <item androID:ID="@+ID/menu0_1" androID:title="menu 0_1"/>                <item androID:ID="@+ID/menu0_2" androID:title="menu 0_2"/>            </group>        </menu>    </item>    <item androID:ID="@+ID/menu1" androID:title="menu 1"/>    <item androID:ID="@+ID/menu2" androID:title="menu 2" androID:enabled="false"/></menu>

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

总结

以上是内存溢出为你收集整理的一手遮天 Android - view(导航类): ToolBar 基础全部内容,希望文章能够帮你解决一手遮天 Android - view(导航类): ToolBar 基础所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/999548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存