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


    }
}
效果圖:


第三部分: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="https://img-blog.csdn.net/20151206221533114?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="300" height="500" alt="" />

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章