【发布时间】:2012-11-24 07:45:10
【问题描述】:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
return true;
case R.id.searchIcon:
return true;
case R.id.startRefresh:
refreshItem = item;
refresh();
return true;
case R.id.stopRefresh:
if (refreshItem != null && refreshItem.getActionView() != null) {
refreshItem.getActionView().clearAnimation();
refreshItem.setActionView(null);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void refresh() {
if (FeedActivity.this != null) {
/*
* Attach a rotating ImageView to the refresh item as an ActionView
*/
LayoutInflater inflater = (LayoutInflater) FeedActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ImageView iv = (ImageView) inflater.inflate(
R.layout.refresh_action_view, null);
Animation rotation = AnimationUtils.loadAnimation(
FeedActivity.this, R.anim.clockwise_refresh);
rotation.setRepeatCount(Animation.INFINITE);
iv.startAnimation(rotation);
refreshItem.setActionView(iv);
}
}
点击前:
点击后:
这里的图标正在动画(旋转)。
问题:
为什么向左移动?
一旦它向左移动,图标变得不可点击,奇怪的是设备后退按钮也不起作用
编辑:
在这个答案下面的 cmets 中:
Jake Warton 说,如果您为菜单项使用大小正确的方形图标,对于遇到同样问题的人来说,您不会遇到这种奇怪的行为。
但我在使用 mdpi 可绘制对象的设备上使用 32x32 图像。如前所述,它必须起作用:(
谢谢
编辑:
refresh_action_view.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Widget.Sherlock.ActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_refresh" />
我在应用中使用的自定义样式
<style name="My_solid_ActionBar" parent="@style/Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/ab_solid_My</item>
<item name="backgroundStacked">@drawable/ab_stacked_solid_My</item>
<item name="backgroundSplit">@drawable/ab_bottom_solid_My</item>
<item name="progressBarStyle">@style/My_ProgressBar</item>
<item name="android:background">@drawable/ab_solid_My</item>
<item name="android:backgroundStacked">@drawable/ab_stacked_solid_My</item>
<item name="android:backgroundSplit">@drawable/ab_bottom_solid_My</item>
<item name="android:progressBarStyle">@style/My_ProgressBar</item>
</style>
【问题讨论】:
-
FWIW,这是一个展示您想要的效果的项目,以防它给您任何想法:github.com/commonsguy/cw-omnibus/tree/master/Progress/ActionBar
-
是的,我使用了你的代码,即使现在进度条(设置为 ActionView)向左移动。其他菜单项都不起作用。
-
您应该发布一个完整的示例项目来演示您的问题。如果在我上面链接的示例中,我将
about设为always并且第一个操作栏项目,我的refresh仍然有效,但没有表现出您描述的行为。 -
@Archie.bpgc 我已经创建了解决方案,也许它可以以某种方式帮助你:stackoverflow.com/a/14360958/492624
标签: android animation actionbarsherlock