1

刚刚说学习了 ICS 操作栏。我正在与 Action Bar Sherlock 合作,以便向后兼容我想做的事情,并且已经浏览了它的示例中的许多源代码。

我有 3 个图像视图,我想设置一个长按所有 3 个的侦听器。当用户长按一个时,我将在操作栏上显示一个 ActionMode,让他们拍照。由于操作栏似乎就像菜单一样工作,我怎么知道 ImageView 在他们单击按钮后触发了我的 ActionMode ?

现在没有完成很多代码,因为我刚刚开始研究它,这是我想做的第一件事。

4

2 回答 2

6

要启动一个动作模式,您需要提供一个ActionMode.Callback类的实例。对于这样的事情,你应该在这个类中创建一个构造函数,它接受一些关于图像视图的相关信息。

public static class ImageActionMode extends ActionMode.Callback {
    private final int viewId;

    public ImageActionMode(View view) {
        viewId = view.getId();
    }

    public boolean onActionItemClicked (ActionMode mode, MenuItem item) {
        //Do something with viewId as the target
    }

    //Other callbacks
}

您还可以保留对完整ImageView或任何其他您需要响应选项项的引用。

现在,当您启动动作模式时,您将执行以下操作:

public void onLongPress(View view, /*whatever else...*/) {
    startActionMode(new ImageActionMode(view));
}
于 2012-02-11T02:02:22.923 回答
0

在花了一些时间之后,我已经实现了它并成功地工作。在下面的链接中,我给出了正确的代码和解释。

https://stackoverflow.com/a/20369954/452487

于 2013-12-04T07:57:20.033 回答