App Bar上的一系列操作

要点:共三部分

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);


    }
}
效果图: App Bar上的一系列操作_第1张图片


第三部分: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;">@Override
public 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="" />

你可能感兴趣的:(android,APP,Bar)