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
原创粉丝点击