上下文操作模式自定义行为

Joh*_*Doe 6 android actionbarsherlock android-actionbar contextual-action-bar

在android开发人员的菜单指南中提到:

当用户取消选择所有项目,按BACK按钮或选择栏左侧的完成操作时,操作模式将被禁用,上下文操作栏将消失.

从技术上讲,这意味着mActionMode.finish(),在BACK按钮按下或Done动作选择呼叫ActionMode.Callback onDestroyActionMode()方法.

我的问题是如何Toast("Action mode exit by Done select")在用户选择时执行自定义操作(例如)Done,以及Toast("Action mode exit by BACK")在用户按下时执行另一个操作(例如)BACK

Jus*_*ler 2

解决此问题的一种方法是使用主题从您创建的操作模式中隐藏完成按钮。然后,您只需将自己的“完成”按钮添加到您创建的每个操作模式中即可。显然,您可以跟踪是否onDestroyActionMode由于按下完成按钮或后退按钮而被调用。这是一个主题,您可以将其应用于完成此任务所需的活动。

 <style name="HideActionModeCloseTheme" parent="@android:style/Theme.DeviceDefault">
    <item name="android:actionModeCloseButtonStyle">@style/NoCloseButton</item>
</style>

<style name="NoCloseButton" parent="@android:style/Widget.DeviceDefault.ActionButton.CloseMode">
    <item name="android:visibility">invisible</item>
</style>
Run Code Online (Sandbox Code Playgroud)