操作栏按钮保持“按下”状态,有可能吗?

4

我有一个应用程序,在某个特定的Activity(绘图)中可以处于多种状态之一,例如绘制、擦除、选择等。

为了启用这些状态,我在ActionBar中为每个状态都设置了一个按钮,但我想做的一件事是通过保持被按下的按钮处于活动状态或按下状态来“显示”用户已启用的状态,直到我关闭它(当他们通过按下其他按钮切换状态时)。

在这里和其他地方搜索都没有找到解决方法...是否有人可以推荐一个可能的解决方案?我考虑过自己实现工具栏,虽然这可能是最终解决方案,但在这一点上使用ActionBar会加快速度。

谢谢。

3个回答

0

我曾经遇到同样的问题,但没有找到解决方案。不过,我找到了一个适合我的解决方法:

onOptionsItemSelected(MenuItem item) 方法中,如果 item 是你想要切换的按钮,只需调用 item.setIcon() 并指向另一个可绘制对象即可。我使用相同的图像,但是换了另一种颜色来显示用户按下按钮的状态。当再次按下按钮时,恢复原始的可绘制对象。


0

据我所知,没有直接的方法来实现这一点,但您可以实现自定义组件来做到这一点。然而,我的建议是使用一个单独的工具栏而不是在操作栏上,因为用户期望所有在操作栏上的按钮都是“操作项”,可以立即执行某些操作,因此在操作栏上放置切换项可能会打破这种期望。这可以让您在操作栏上节省空间,以显示用户期望看到的内容,例如:导航、“撤消”、“保存”、“删除”...


是的,这正是我作为一个长期解决方案所思考的,但现在正在原型开发一些功能,希望能有一个快速且有效的方法。 - Unpossible
1
我认为在操作按钮中放置一个切换按钮没有任何问题。Google在Honeycomb及以上版本的Gmail应用程序中使用它们。我正在考虑自己实现这个功能。 - Patrick Jackson
不要认为用户期望操作按钮只是一个简单的按钮。自定义视图非常有用,也非常常见,例如搜索视图。切换按钮也可以被视为一种操作。 - Necronet

0

我同意Bruno的意见,为了用户体验和代码效果的考虑,最好在单独的工具栏中实现它,因为你不能完全自定义操作栏。但是如果你决定采用它,我可以想到一些非常简单的方法,例如当点击某个菜单按钮时,将被点击的按钮设置为一个新的可绘制对象(按下的按钮),其他按钮则设置为普通的可绘制对象(未按下)。所以每个菜单图标都会有一个按下和未按下的图标。但是你需要使用invalidateOptionsMenu


有趣。这可能在短期内有效,但我同意需要长期拥有一种定制解决方案。 - Unpossible

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接