1. 程式人生 > >Android ActionMode模式使用

Android ActionMode模式使用

ActionMode模式使用

ActionMode模式

ActionMode模式為在頁面產生一個懸浮的類似於ActionBar的控件,懸浮在ActionBar之上。
使用它的好處在於,不需要在頁面上再增加操作控件,充分利用頁面空間。

ActionMode啟動方式

此方法在Activity類中實現,繼承自Activity類可以使用。

// API11加入(默認模式TYPE_PRIMARY)
public ActionMode startActionMode(ActionMode.Callback callback);
// API23加入
public ActionMode startActionMode(ActionMode.Callback callback, int type);

API23加入帶type類型構造,分別為TYPE_PRIMARYTYPE_FLOATING
TYPE_PRIMARY: The action mode is treated as a Primary mode. This is the default.(默認類型)
TYPE_FLOATING: The action mode is treated as a Floating Toolbar.(浮動工具欄類型,回調需要使用ActionMode.Callback2,實現onGetContentRect方法,定位浮動工具欄位置)

ActionMode監聽回調

實現ActionMode.Callback接口。

private class MyActionModeCallback implements ActionMode.Callback {

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // ActionMode創建,定義menu菜單。
            MenuInflater menuInflater = mode.getMenuInflater();
            menuInflater.inflate(R.menu.action_mode_menu, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // ActionMode工作前的預先處理
            mode.setTitle("ActionMode");
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // menu菜單Item點擊回調
            if (item.getItemId() == R.id.menu_confirm) {
                mode.finish();
            }
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // ActionMode模式結束處理(點擊左側取消,或者點擊返回鍵結束ActionMode模式)。
            // ActionMode.finish()執行後會結束ActionMode模式,此時會執行這裏。
        }
    }

ActionMode樣式自定義

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- 左側返回按鈕圖片 -->
    <item name="actionModeCloseDrawable">@mipmap/ic_launcher</item>
    <!-- 其他需要修改樣式可以在這裏自定義 -->
</style>

Android ActionMode模式使用