【发布时间】:2014-03-11 21:30:51
【问题描述】:
我对 ActionBarSherlock 有一个奇怪的问题,使用标签导航和动作模式。
重复问题很简单,我使用演示代码生成以下示例活动:
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(仅在模拟器上测试)我有以下行为。
- 应用程序启动(纵向模式)并且它工作正常;
- 我旋转了应用程序,它工作正常;
- 我再次旋转应用程序,现在选项卡导航和 ActionMode 重叠 (http://i.stack.imgur.com/Zf1VG.png)。
有时(但很少),一切都可以完美运行,特别是如果我在 Dev 中启用了所有动画。设置(通常我禁用所有动画)。
我正在使用 ActionBarSherlock 4.4。
任何建议都将不胜感激,因为我真的不明白我在哪里犯了错误。
感谢和问候。
【问题讨论】:
-
您找到解决方案了吗?我在使用 appcompat 时遇到了类似的问题,其中选项卡覆盖了 HTC One X 上的操作模式,希望 sherlock 解决方案可以帮助我找到 appcompat 解决方案。
-
@ChrisM 如果您仍然感兴趣并且没有找到解决方案,请查看我的答案。