Android自定義ActionMode背景色
一 ActionMode使用方法
二 自定義背景色
三 源碼分析
四 解決方案
ActionMode是一種使用者互動模式。可以給使用者提供額外一些互動,并且在出現的時候會替換正常界面的一部分。
比如在應用“輕聽”中,長按歌曲清單,在Toolbar的位置就會出現ActionMode,會有一些進一步互動的按鈕。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9gTbjZHczgVeWdUYqpEWZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DNyQjMyQDNxIDOxITM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
一 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中處理結尾的操作