尝试使用Actionbar Sherlock对我的Actionbar进行一些自定义..
我有一个现有的自定义视图,它覆盖了Draw,并根据Accuracy以GPS状态更新自身。
我希望它是用户可以使用的最正确的菜单选项。 (所以我相信customView已经出局了。)
我试图通过扩展Drawable而不是扩展View(或ImageView),在Action栏上实现这个功能,这是我能够成功完成的。
我的问题似乎是延伸可绘制,当GPS精度发生变化时,我无法使我的视图无效。我可以调用invalidateSelf,并且我启用了一个Callback侦听器,其中传入了invalidate(Drawable who),但是如果我尝试将who设置为更新的图像,则没有任何反应..
如果我点按图标,它会刷新&更新..
想知道是否有比扩展drawable更好的解决方案,或者如果我扩展drawable,我怎么能让它动态更新w / out用户输入。
答案 0 :(得分:1)
如果只显示几个不同的状态(可能有4或5个图标可以与您的应用捆绑在一起),我建议您在onPrepareOptionsMenu()期间动态更新菜单选项。
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem gpsStatus = menu.findItem(R.id.menu_gps);
// figure out which icon to show here
// int drawableId = R.drawable.ic_gps_accurate
gpsStatus.setIcon(drawableId);
}
要触发此代码,只需调用invalidateOptionsMenu();您可能希望保存状态,以便更快和更快你的onPrepareOptionsMenu()更容易找到正确的图标。
private void onGPSStatusUpdated(int newStatus) {
mGPSStatus = newStatus;
invalidateOptionsMenu();
}