App Bar上的一系列操作
来源:互联网 发布:工业机器人编程原理 编辑:程序博客网 时间:2024/06/06 03:24
要点:共三部分
1.Adding and Handling Actions(添加和处理操作)
2.添加 Up Action
3.Action Views and Action Providers
第一部分:Adding and Handling Actions(添加和处理操作)
1.Add Action Buttons(添加操作按钮)为了在action bar添加行为, 在res/menu/ 目录下创建一个新的XML
代码(XML):
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_favorite" android:icon="@drawable/ic_heart" android:title="love" app:showAsAction="ifRoom"> </item><item android:id="@+id/action_settings" android:title="settings" app:showAsAction="never"></item></menu></span>2.Respond to Actions 对添加的行为进行反应
<span style="font-size:18px;"> @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case R.id.action_favorite: Toast.makeText(this,"You have added it to your favourite",Toast.LENGTH_SHORT).show(); case R.id.action_settings: Toast.makeText(this,"You are choosing settings",Toast.LENGTH_SHORT).show();default:return super.onOptionsItemSelected(item); } }</span>
效果图:
第二部分:添加 Up Action
为了让你的APP更容易返回主界面,最简单的就是在app bar上提供UP按钮
1.声明Parent Activity
在manifest设置android:parentActivityName(introduced in Android 4.1)
为了让更多支持更多老版本Android的设备,定义<meta-data>其中name="android.support.PARENT_ACTIVITY"
value是Parent Activity的名字
代码展示:
<span style="font-size:18px;"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MyChildActivity" android:label="@string/title_activity_child" android:parentActivityName=".MainActivity"></activity> </application></span>
2.实现Up Button
调用app bar的setDisplayHomeAsUpEnabled()方法
代码如下:
public class MyChildActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_child); Toolbar myChildToolBar = (Toolbar) findViewById(R.id.my_child_toolBar); setSupportActionBar(myChildToolBar); ActionBar ab=getSupportActionBar(); ab.setDisplayHomeAsUpEnabled(true); }}效果图:
第三部分:Action Views and Action Providers
Action View是一种可以是你的app bar拥有更多功能的行为(例如一个搜索的行为视图可以在不改变activities or fragments下使用户在app bar输入搜索文本)
Action Provider 是一种拥有专属布局的行为,这种行为呈现给用户的是按钮或者菜单项,但当用户点击时,action provider会以你想定义的任何方式控制这种行为的动作。
例如:SearchView可以用作Action View用来输入查询内容;ShareActionProvider可以用作Action Provider 实现与其他App分享信息
1.添加Action View
用<item>创立一个菜单项 actionViewClass: 执行这个行为的组件的类(The class of a widget that implements the action)
actionLayout: 描述行为元素的布局资源(A layout resource describing the action's components)
代码(XML):
<span style="font-size:18px;"><item android:id="@+id/action_search" android:title="@string/action_search" android:icon="@drawable/ic_search" app:showAsAction="ifRoom|collapseActionView" app:actionViewClass="android.support.v7.widget.SearchView" /></span>其中showAsAction中ifRoom指只要app bar有空间就独立放在app bar上,若没有空间就放在溢出菜单中
collapseActionView指当用户不与这个行为交互时,在app bar 上应显示是一个图片或在溢出菜单中是个菜单项
代码(Java):
<span style="font-size:18px;">@Overridepublic boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_activity_actions, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); // Configure the search info and add any event listeners... return super.onCreateOptionsMenu(menu);}</span>
调用静态方法getActionView()来得到action view对象实例
2.添加Action Provider
代码(XML):
<item android:id="@+id/action_share" app:showAsAction="ifRoom" app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
效果图:<img src="http://img.blog.csdn.net/20151206221533114?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="300" height="500" alt="" />
0 0
- App Bar上的一系列操作
- 去掉Android app上的Title Bar
- 去掉Android app上的Title Bar
- 拦截webview上的请求,进行一系列操作
- 一系列的IO操作
- 单链表的一系列操作
- 任务栏的一系列操作
- git 的一系列操作
- 二维码的一系列操作
- 一系列MFC操作文件实例(上)
- 字符串(String)的一系列操作
- 字符串(Sring)的一系列操作
- 文件操作的一系列方法
- 链表的一系列操作
- java 日期的一系列操作
- java 日期的一系列操作
- 树状数组的一系列操作
- 数据结构栈的一系列操作
- 6、序列化
- 查找——索引结构和分块查找
- 探索日志的奥秘 - 模版挖掘
- 简单工厂模式
- C#——字符串总结
- App Bar上的一系列操作
- Arduino 平台与C语言程序设计-week2-C Programming-Lesson2
- VIM之taglist
- jvm内存溢出问题解决
- 从大数据菜鸟走上大师的历程
- zoj Special Subsequence 3349 (DP+线段树优化) 好题***
- IOS之nil,Nil,null,Null,NULL,NSNull
- Strust2_学习笔记(四)----中文问题、数据校验
- java编程规范