天天看點

Android自定義ActionMode背景色Android自定義ActionMode背景色

Android自定義ActionMode背景色

一 ActionMode使用方法

二 自定義背景色

三 源碼分析

四 解決方案

ActionMode是一種使用者互動模式。可以給使用者提供額外一些互動,并且在出現的時候會替換正常界面的一部分。

比如在應用“輕聽”中,長按歌曲清單,在Toolbar的位置就會出現ActionMode,會有一些進一步互動的按鈕。

Android自定義ActionMode背景色Android自定義ActionMode背景色

一 ActionMode使用方法

首先Activity需要繼承自AppCompatActivity

然後調用AppCompatActivity的方法

public ActionMode startSupportActionMode(@NonNull ActionMode.Callback callback);
           

需要傳入一個ActionMode.Callback

實作以下幾個方法:

public boolean onCreateActionMode(ActionMode mode, Menu menu);
public boolean onPrepareActionMode(ActionMode mode, Menu menu);
public boolean onActionItemClicked(ActionMode mode, MenuItem item);
public void onDestroyActionMode(ActionMode mode);
           

在onCreateActionMode中實作ActionMode的樣式定制

MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.menu_action_mode, menu);
           

其中menu就是簡單的menu按鈕菜單

同時,左側的視圖也可以實作自定義,就比如全選和旁邊的X按鈕

View view = LayoutInflater.from(mActivity).inflate(R.layout.layout_actionmode_custom_view, null, false);
actionMode.setCustomView(view);
           

在onPrepareActionMode中處理一些前置的工作

onActionItemClicked就是處理ActionMode中menu按鈕點選的工作

可以根據item的id來判斷是哪個按鈕被點選了,進而進行相應的操作

最後在onDestroyActionMode中處理結尾的操作