一手遮天 AndroID - vIEw(导航类): Toolbar 基础示例如下:项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd
/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 基础所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)