- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用选项卡导航和操作模式时遇到 ActionBarSherlock 的奇怪问题。
重复问题很简单,我使用演示代码生成以下示例 Activity :
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener {
private ActionMode actionMode = null;
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(com.actionbarsherlock.R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (int i = 1; i <= 2; i++) {
ActionBar.Tab tab = getSupportActionBar().newTab();
tab.setText("Tab " + i);
tab.setTabListener(this);
getSupportActionBar().addTab(tab);
}
actionMode = startActionMode(new TestActionMode());
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
private final class TestActionMode implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.add("Add").setIcon(android.R.drawable.ic_input_add).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Search").setIcon(android.R.drawable.ic_search_category_default).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
}
}
}
它在 Android 4.0 上正常工作(在真实设备和模拟器上测试),但在 Jelly Bean 上(仅在模拟器上测试)我有以下行为。
有时(但很少见),一切都完美无缺,尤其是当我在 Dev 中启用所有动画时。设置(通常我禁用所有动画)。
我正在使用 ActionBarSherlock 4.4。
任何建议将不胜感激,因为我真的不明白我在哪里犯了错误。
感谢和问候。
最佳答案
我最近遇到了同样的问题。在浪费了几天之后,发现这种奇怪的行为是由 this issue 中描述的 UX 缺陷引起的。事实上,与 ABS (action bar sherlock) 无关.
最可靠的解决方法似乎是使用反射来控制应如何呈现操作栏:
/**
* On Android 3.0 and above, while using the ActionBar tabbed navigation style, the tabs sometimes appear above the action bar.
* This helper method allows you to control the 'hasEmbeddedTabs' behaviour.
* A value of true will put the tabs inside the ActionBar, a value of false will put it above or below the ActionBar.
*
* You should call this method while initialising your ActionBar tabs.
* Don't forget to also call this method during orientation changes (in the onConfigurationChanged() method).
*
* @param inActionBar
* @param inHasEmbeddedTabs
*/
public static void setHasEmbeddedTabs(Object inActionBar, final boolean inHasEmbeddedTabs)
{
// get the ActionBar class
Class<?> actionBarClass = inActionBar.getClass();
// if it is a Jelly Bean implementation (ActionBarImplJB), get the super class (ActionBarImplICS)
if ("android.support.v7.app.ActionBarImplJB".equals(actionBarClass.getName()))
{
actionBarClass = actionBarClass.getSuperclass();
}
try
{
// try to get the mActionBar field, because the current ActionBar is probably just a wrapper Class
// if this fails, no worries, this will be an instance of the native ActionBar class or from the ActionBarImplBase class
final Field actionBarField = actionBarClass.getDeclaredField("mActionBar");
actionBarField.setAccessible(true);
inActionBar = actionBarField.get(inActionBar);
actionBarClass = inActionBar.getClass();
}
catch (IllegalAccessException e) {}
catch (IllegalArgumentException e) {}
catch (NoSuchFieldException e) {}
try
{
// now call the method setHasEmbeddedTabs, this will put the tabs inside the ActionBar
// if this fails, you're on you own <img src="http://www.blogc.at/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley">
final Method method = actionBarClass.getDeclaredMethod("setHasEmbeddedTabs", new Class[] { Boolean.TYPE });
method.setAccessible(true);
method.invoke(inActionBar, new Object[]{ inHasEmbeddedTabs });
}
catch (NoSuchMethodException e) {}
catch (InvocationTargetException e) {}
catch (IllegalAccessException e) {}
catch (IllegalArgumentException e) {}
}
以上代码摘自this blog post .
关于android - ActionBarSherlock 在选项卡导航和 ActionMode 上重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19633642/
我通过创建两个不同的项目、库项目和我自己的 android 项目实现了 ActionBarSherlock。现在我正在考虑将库项目放在我的应用程序库目录中并将该项目附加到我的应用程序。这在逻辑上可能吗
与许多其他 Android 开发人员一样,我安装了 Android Studio,但是如何将 actionbarsherlock 安装到 Android Studio 中? 有什么帮助吗?我什至不知道
您好,我在导入后遇到了 ActionBarSherlock 的问题。 我做了以下步骤: 我从库文件夹中导入了东西 我检查了项目是否设置为 IsLibrary 我选择了项目构建目标:Android 4.
我正在迁移我的代码以使用 Actionbarsherlock。我已经完成了我需要的所有代码调整,并且我的项目编译正常没有错误,但是我得到以下异常: java.lang.NoClassDefFoundE
我在 Eclipse 中有一个现有项目 MyProject,它使用库 actionbarsherlock(4.3.1 版)。该项目在 android studio 中编译并运行,但我没有得到构建变体。
我想要 Sherlock 操作栏左侧的微调器,但由于标准行为,它出现在右侧。[见附件图片 如何解决? 最佳答案 好的,我已经通过使用导航列表而不是在 menu.xml 中手动添加微调器来完成此操作:
我正在尝试使用 Eclipse Indigo 和 ADT r20 构建一个带有 ActionBarSherlock 4.1 的小型示例应用程序。 我创建了一个包含空白 Activity 的新 Andr
我已经坚持了好几天/几周了。我正在尝试为 actionbarsherlock 添加 aar,但我一直收到此错误: Failed to notify project evaluation listene
我通过 eclipse 创建了一个新的 Android 项目,其中包含 MainActivity。我将 ActionBarSherlock 添加到项目中(“属性”>“Android”,然后单击“添加”
尝试从 ActionBarSherlock 开始。下载库。使用上次更新设置 ADT,SDK 相同。 尝试进行简单的 Activity : import com.actionbarsherlock.ap
我一直在尝试将 ActionbarSherlock maven 依赖项添加到我的项目中 com.actionbarsherlock library 4.2.0 在我的 po
我想使用支持库 r11(尤其是嵌套片段)的实际版本中的新功能。 ABS 4.2.0 可以实现吗? 谢谢, 米尔科 最佳答案 最新的支持库 r11 似乎在 ABS 4.2 上运行良好。我用 r11 版本
我有一个Android Studio项目,该项目依赖于build.gradle中设置的ActionBarSherlock: dependencies { compile 'com.action
我使用带有 3 个选项卡的 SherlockFragmentActivity。每个选项卡都包含一个 SherlockFragment。 如果我使用以下代码重新启动我的应用程序(以应用主题):(感谢 D
我正在使用 ActionBarSherlock、Scala、Sbt 和 android-plugin。一切都工作正常,但突然无法编译。我使用 git 回退到以前有效的提交,但它仍然会抛出以下 12 个
我试图弄清楚为什么我的 APK 在导出时有 21 MB 大。我正在使用 HoloEverywhere 和 ActionBarSherlock,因此我正在做一个实验,看看如果没有它们,我的 APK 会有
我有一个扩展 SherlockFragment 的类,它有一个 actionbarItem“过滤器” TabbedFragment.java public class TabbedFragment e
首先,我想说我已经修改了方法needsDividerBefore,现在菜单项之间出现了分隔线。但是,我想自定义这个分隔线,我尝试了前面提到的所有方法,但我没有成功。 其次,我想要的分隔线与使用的 fo
我有很多菜单项 - 有些是用 Java 代码定义的,有些是用 XML 定义的。 XML 中的那些都将 orderInCategory 设置为较高的值。 在代码中定义的项目中,有些有图标,有些没有。只有
我有一个使用 Viewpagerindicator 的应用程序。我正在使用它的标签部分。我使用黑色背景和默认的蓝色指示器颜色。我想在我的应用程序中添加一个操作栏,所以我开始使用 Actionbarsh
我是一名优秀的程序员,十分优秀!