menuitem相关知识
-
ExtAspNet应用技巧 - 动态创建工具栏菜单文章截图 - 更好的排版问题描述 shguo 网友在一封邮件中提到,希望能够动态创建工具栏菜单。 我理解的大致步骤如下: 1. 提供一个 menu.xml 文件: <?xml version="1.0" encoding="utf-8" ?> <menu> <menuItem text="首页" navigateurl="default.aspx" /> <menuItem text="新闻" >  
-
FLutter组件通信(1)本文介绍flutter父子组件数据传递和回调. 还是以之前的代码为例Flutter_DayByDay由于之前用React-Native写项目,顺便对比一下 RN 父组件直接在xml标签中写属性={值/方法},子组件通过props去取属性和方法 父组件类中 <MenuItem title={'新手指引'} img={'新手指引'} click = {() => { }}/> 子组件类 <Image style={styles.image} source={{uri:this.props.img}} resizeMode={'center'} /> <TouchableOpacity onPress={this.props.onPressFirst} > Flutter 这里将之前Raise
-
Head First设计模式读书总结——迭代器与组合模式你将在本章中学习如何能让客户遍历你的对象而又无法窥视你存储对象的方式,也将学习如何创建一些对象超集合(super collection),能够一口气跳过某些让人望而生畏的数据结构,你还将学习一些关于对象职责的知识。 题例:餐厅和煎饼屋合并了 虽然可以在一个地方同时想用煎饼屋的早餐和餐厅的午餐,但是煎饼屋的菜单用用的ArrayList记录菜单的,而餐厅用的是数组,而两家餐馆都不愿意修改自己的实现。毕竟有很多代码依赖它们。 检查菜单项 至少两家餐馆都统一实现了MenuItem: class MenuI
-
Android Navigation 架构组件入门教程前言Navigation组件是AndroidStudio3.2版本更新带来的新组件,其特点是在一个Activity中使用多个Fragment处理平滑用户操作,且可以统一进场,退场,弹出,隐藏动画,可视化处理Action,支持深层链接(不在同一个Activity时可以弹出跳转,底层是BroadcastReceiver),支持以少量代码连接底部导航或者连接ActionBar菜单或者连接Drawlayout的MenuItem,且导航时提供了类型安全(SafeArgs)。好处说了那么多,下面咱们来看看具体如何使用吧!教程下载教程github你需要知道关于Navigation你需要知道如下三个组件Navigation graph这是Navigation的导航图,位于res/navigation/目录下的xml文件,其有两个模式,Design(可视化设计模式)和Text(文字模式),在Design可视化环境下可以对整个Navigation做新建等操作,在Text模式下可进行代码声明,如下所示:<fragment
menuitem相关课程
menuitem相关教程
- 4.3 编写 Activity 最后就可以编写 Activity 了,其中要做的就是为 Menu 做资源加载,并接收点击回调即可:package com.emercy.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.PopupMenu;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.widget.Toast;public class MainActivity extends AppCompatActivityimplements PopupMenu.OnMenuItemClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 为 TextView 注册 Context Menu registerForContextMenu(findViewById(R.id.tv_context)); } // 加载 Option Menu @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.menu, menu); return true; } // 接收 Option Menu 的点击 @Override public boolean onOptionsItemSelected(MenuItem item) { return onItemClick(item); } // 加载 Context Menu @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.menu, menu); } // 接收 Context Menu 的点击 @Override public boolean onContextItemSelected(MenuItem item) { return onItemClick(item); } // 加载 Popup Menu public void pop(View v){ PopupMenu popup = new PopupMenu(this, v); MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.menu, popup.getMenu()); popup.show(); } // 接收 Popup Menu 的点击 @Override public boolean onMenuItemClick(MenuItem item) { return onItemClick(item); } private boolean onItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.main_menu: Toast.makeText(this, "选择了客户端开发", Toast.LENGTH_SHORT).show(); break; case R.id.submenu1: Toast.makeText(this, "选择学习 Android", Toast.LENGTH_SHORT).show(); break; case R.id.submenu2: Toast.makeText(this, "选择学习 iOS", Toast.LENGTH_SHORT).show(); break; } return true; }}针对每个菜单都分别有“加载资源”和“处理点击”两种操作,另外由于每个菜单的处理逻辑都一样,为了增强代码复用性我单独拎出了一个函数onItemClick()专门用于统一处理点击事件。最终样式如下(在不同的设备上可能会有所不同):Option Menu 的子菜单:Context Menu 的子菜单:Popup Menu 的主菜单:
- 3.2 Context Menu 示例 3.2.1 加载 ContextMenu加载一个 ContextMenu 通常需要以下步骤:调用registerForContextMenu()传入一个 View,来为该 View 注册一个Context Menu,从此该 View 就和一个 OptionMenu 绑定;在 Activity 中复写onCreateContextMenu()方法,当用户长按你注册过的 View,Android 系统就会回调此方法,我们可以在这里进行 menu 资源的加载。其实逻辑和 Option Menu 类似,但是因为需要绑定 View 所以多了一个注册操作,加载代码如下:@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_file, menu);}onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)方法需要传入 3 个参数,分别是:ContextMenu menu: 菜单对象,类似 OptionMenu 里面的 Menu 对象View v: 与 Context Menu 绑定的 View 对象ContextMenuInfo menuInfo: 包含与被选项的一些附加信息注意: 如果当前 Activity 有多个 View 都有 Context Menu,那么需要通过这几个参数来判断当前触发的是哪个 View 相关的 Context Menu3.2.2 处理 Context Menu 选项的点击事件当用户点击上下文菜单项的时候,系统会回调onContextItemSelected()方法,所以我们可以在方法里实现相应的处理逻辑。如下:@Override public boolean onContextItemSelected(MenuItem item) { // 处理 Context Menu 选项的点击事件 } }
- 3.1 Option Menu 示例 3.1.1 加载 Option Menu 资源为了使用 Option Menu,我们需要在 Activity 中复写onCreateOptionsMenu()方法:@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_file, menu); return true; }当 Activity 创建 Option Menu 的时候系统会回调此函数,我们只需要在里面 inflate 我们的菜单资源即可,其中getMenuInflater()用来获取一个“MenuInflater”对象,我们可以用它来加载一个 menu 资源文件——menu.xml。3.1.2 处理菜单项的点击事件当用户在菜单中点击了某个选项之后,Android 系统会回调onOptionsItemSelected()方法,并传入被选菜单项的 Menu 实例。我们可以通过 Menu 实例的getItemId()方法拿到菜单项对应的唯一 ID(通过<item/>标签的 android:id 属性设置的),从而判断用户选择的是哪一项,进而执行相应的逻辑,代码如下:@Overridepublic boolean onOptionsItemSelected(MenuItem item) { // 根据点击的选项处理不同的逻辑 switch (item.getItemId()) { case R.id.menu: // 点击主菜单 return true; case R.id.submenu1: // 点击子菜单1 return true; case R.id.submenu2: // 点击子菜单2 return true; default: return super.onOptionsItemSelected(item); }}**注意:**在你成功处理了菜单项的点击事件之后(我们通常称之为消费),你需要在函数的末尾返回“true”,如果没有消费那么可以返回false,不过建议调用super.onOptionsItemSelected(item)将本次点击事件交给上层处理(上层的默认实现也是false)。
- Flask 的 ORM 模型-概述 快速上手小而精的 Flask Web 开发框架
- 故障迁移一致性 一站式Redis解决方案
- 章节介绍 一站式Redis解决方案
menuitem相关搜索
-
mac osx
machine_start
macox
magellan
malloc
manifest
manifest文件
map
map 遍历
mapreduce编程
maps google com
margin
margin bottom
margin left
margin right
margin top
marginbottom
marginheight
marginleft
margintop